字符串方法
1.capitalize方法:字符串首字母大写
举例:
test="alex"
v=test.capitalize()
print(v)
返回结果:
Alex
2.casefold和lower方法,都是把字符串变成小写,区别是lower应对一般情况,而casefold使用范围更广
举例:
test="aLex"
v1=test.casefold()
print(v1)
v2=test.lower()
print(v2)
返回结果:
alex
alex
3.center方法:设定一个总长度,将字符串放置在中间,如果设定的长度多于字符串的长度,则使用指定的内容填充,默认是空格,并且只允许填充1个字符
格式:
count(<长度>[,<填充字符>])
举例:
test="aLex"
v=test.center(20)
返回结果:
aLex
举例:
test="aLex"
v=test.center(20,"*")
print(v)
返回结果:
********aLex********
4.count方法:在字符串中查找指定字符出现的次数,如果不指定起始及结束位置,则默认从头开始
格式:
count(<指定字符串>[,<起始位置>[,<结束位置>]])
注意:起始位置从1开始计算,而非0
举例:
test="aLexalex"
v=test.count('e')
print(v)
返回结果:
2
test="aLexalex"
v=test.count('e',5) #从第5位开始计算
print(v)
返回结果:
1
test="aLexalex"
v=test.count('e',2) #从第2位开始计算
print(v)
返回结果:
2 test="aLexalex"
v=test.count('e',2,5) #从第2位开始到第5位结束
print(v)
返回结果:
1 test="aLexalex"
v=test.count('e',6,7) #从6到7之间查找,起始位置是从1开始计算
print(v)
返回结果:
1
5.endswith方法:指定子串,判断字符串结尾是否是给定的字符串,返回布尔值
格式:
endswith(<指定子串>[,[开始位置],[结束位置]])
举例:
test="alex"
v=test.endswith('e')
print(v)
返回结果:
False test="alex"
v=test.endswith('x')
print(v)
返回结果:
True test="alex"
v=test.endswith('ex')
print(v)
返回结果:
True test="alexstkoex"
v=test.endswith('ex',2,6)
print(v)
返回结果:
False test="alexstkoex"
v=test.endswith('ex',1,4) #起始位置是从1开始计算
print(v)
返回结果:
True
6.find方法:寻找指定子串在字符串中的位置,返回值是位置
五星方法:★★★★★
格式:
find(<指定子串>[,起始位置][,结束位置])
注意:起始位置从0开始计算,而非1
举例:
test="alexstlkoex"
v=test.find('l')
print(v)
返回结果:
1 test="alexstlkoex"
v=test.find('e')
print(v)
返回结果:
2 test="alexstlkoex"
v=test.find('e',2,4)
print(v)
返回结果:
2 test="alexstlkoex"
v=test.find('l',1,6) #指定末尾是6,不计算,也就是说指定位置是从1开始至6,并不包含6
print(v)
返回结果:
1
7.format方法:格式化字符串,将字符串中的占位符替换为指定变量的值,变量以大括号括起来
格式:
format(<变量表达式>[,<变量表达式>]...)
举例:
test='i am {name}'
print(test)
v=test.format(name='alex')
print(v)
返回结果:
i am {name}
i am alex
举例:
test='i am {name}, age is {age}'
print(test)
v=test.format(name='alex',age='')
print(v)
返回结果:
i am {name}, age is {age}
i am alex, age is 19
举例:也可以根据出现的顺序替换
test='i am {0}, age is {1}'
print(test)
v=test.format('alex','')
print(v)
返回结果:
i am {0}, age is {1}
i am alex, age is 19
8.format_map方法:与format类似,只不过以key-value的样式传入变量的值
格式:
format_map({"key":'value'[,"key":'value',...]})
举例:
test='i am {name}, age {a}'
v1=test.format(name='df',a=10)
print(v1)
v2=test.format_map({"name":'alex',"a":19})
print(v2)
返回结果是:
i am df, age 10
i am alex, age 19
9.index方法:与find类似,也是查找位置,区别在于index如果没找到会报错,find方法如果没找到返回-1
10.isalnum方法:用来判断字符串中是否只包含数字和字母,返回布尔值
格式:
isalnum()
举例:
test="usb2.0+usb3.0"
v=test.isalnum()
print(v)
返回值是:
False test="usb2.0usb3.0"
v=test.isalnum()
print(v)
返回值是:
False test="usb2.0usb3"
v=test.isalnum()
print(v)
返回值是:
False test="usb20usb30"
v=test.isalnum()
print(v)
返回值是:
True test="usbusb" #只包含字符,返回True
v=test.isalnum()
print(v)
返回值是:
True test="" #只包含数字,返回True
v=test.isalnum()
print(v)
返回值是:
True
11.expandtabs方法:常用于断句。
具体作用:指定制表符宽度,在字符串中按照宽度一次读入,如果读入之中没有制表符,则再次读入,如果读入中有制表符(\t),则把制表符用空格补充,补充的数量根据指定宽度减去制表符之前读入的字符串长度
格式:
expandtabs(<num>)
举例
str1="uyiujoiuerwje\t0021jk\tjljsdf"
v=str1.expandtabs(6)
返回结果:
uyiujoiuerwje 0021jk jljsdf
执行过程如下:
设定读入宽度为6
开始读入6个字符:uyiujo这期间没有制表符,不操作
继续读入6个字符:iuerwj这期间没有制表符,不操作
继续读入6个字符:e\t在读入期间碰到了制表符,则停止读入,由于制表符之前有个字符e占用一个位置,则其余5个位置用空格代替,最后就是e+5个空格
继续读入6个字符:0021jk这期间没有碰到制表符,不操作
继续读入6个字符:碰到了制表符,那么就用6个空格代替制表符;
继续读入6个字符:jljsdf这期间没有碰到制表符,不操作
最后输出结果:uyiujoiuerwje 0021jk jljsdf
举例:
str1="12345678\t9"
v=str1.expandtabs(6)
print(v,len(v))
返回结果:
12345678 9 13 str1="1234567\t89"
v=str1.expandtabs(6)
print(v,len(v))
返回结果:
1234567 89 14 str1="username\temail\tpassword\nCCTV\tying@q.com\t123\nCCTV\tying@q.com\t123\nCCTV\tying@q.com\t123\n"
v=str1.expandtabs(20)
print(v)
返回结果:
username email password
CCTV ying@q.com 123
CCTV ying@q.com 123
CCTV ying@q.com 123
执行过程如下:
设置了读入宽度为20,则:
开始读入20个字符,username读完之后遇到制表符,则把剩余空间使用空格补全;
继续读入20个字符,email读完之后遇到制表符,则把剩余空间使用空格补全;
继续读入20个字符,password读完后遇到换行符,则开始换行,结束读入
11.isalpha方法:判断字符串中是否全部都是字母,返回值是布尔值
举例:
str1="asdf"
v=str1.isalpha()
print(v)
返回结果:
True str1="as2df"
v=str1.isalpha()
print(v)
返回结果:
False str1="as汉字df"
v=str1.isalpha() #汉字也算作字母
print(v)
返回结果:
True
12.isdecimal和isdigit方法:都可以用来判断一个字符串是否全部是数字
区别:isdigit范围更广泛,isdecimal只能判断十进制数字而且是整型,否则一律为false
举例:
str1=""
v1=str1.isdecimal()
v2=str1.isdigit()
print(v1,v2)
返回结果:
True True str1="二"
v1=str1.isdecimal()
v2=str1.isdigit()
print(v1,v2)
返回结果:
False False str1="a123"
v1=str1.isdecimal()
v2=str1.isdigit()
print(v1,v2)
返回结果:
False False #只能判断整数,小数不行
str1="3.1415926"
v1=str1.isdecimal()
v2=str1.isdigit()
print(v1,v2)
返回结果:
False False #负数也不行
str1="-31415926"
v1=str1.isdecimal()
v2=str1.isdigit()
print(v1,v2)
返回结果:
False False #特殊类型的数值表示
str1="②"
v1=str1.isdecimal()
v2=str1.isdigit()
print(v1,v2)
返回结果:
False True
13.isidentifier方法:判断是否是标识符,返回布尔值
标识符的认定标准:字母、数字、下划线,并且不能以数字开头
只要符合上面的标准就是标识符
举例:
str1="def"
v=str1.isidentifier()
print(v)
返回结果:
True str1="1def"
v=str1.isidentifier()
print(v)
返回结果:
False str1="_def"
v=str1.isidentifier()
print(v)
返回结果:
True
14.islower方法:判断字符串是否都是小写;
isnumeric方法:判断字符串是否是数值,这个判断范围比isdigital更广泛
举例:
str1="二"
v1=str1.isdecimal()
v2=str1.isdigit()
v3=str1.isnumeric()
print(v1,v2,v3)
返回结果:
False False True
15.isprintable方法:判断字符串内容是否包含不可显示的字符,返回布尔值
例如:\t制表符、\n换行符
举例:字符串中包含不可显示的字符,返回false
str1="ouisad\tdfj"
v=str1.isprintable()
print(v)
返回结果:
False
16.isspace方法:判断字符串是否只包含空格,只包含空格返回True,否则返回False
举例:
str1=" "
v=str1.isspace()
print(v)
返回结果:
True str1=" "
v=str1.isspace()
print(v)
返回结果:
True
17.istitle方法及title方法:
istitle方法:判断字符串是否符合文章标题标准,符合返回True,否则返回False
符合文章标题的要求:字符串中每个单词开头字母均为大写
举例:
str1="this is a string"
v=str1.istitle()
print(v)
返回结果:
False str1="This Is A String"
v=str1.istitle()
print(v)
返回结果:
True title方法:把字符串转换为标题样式
举例:
str1="this is a string"
v=str1.title()
print(v)
返回结果:
This Is A String
18.join方法:对字符串中的每个字符按照指定分隔符进行拼接
五星重点:★★★★★
举例:
str1="七月的风八月的雨"
print(str1)
t=" "
v=t.join(str1)
print(v)
返回结果:
七月的风八月的雨
七 月 的 风 八 月 的 雨 举例:
str1="七月的风八月的雨"
print(str1)
v="_".join(str1)
print(v)
返回结果:
七月的风八月的雨
七_月_的_风_八_月_的_雨
19.ljust和rjust方法:与center类似,区别在于center把字符串放中间,ljust把字符串放左侧,rjust把字符串放右侧
举例:
str1="alex"
v1=str1.ljust(20,"*")
v2=str1.rjust(20,"*")
print(v1)
print(v2)
返回结果:
alex****************
****************alex
20.lower方法和upper方法:将字符串中字符全部转换成小写和大写
五星重点:★★★★★
举例:
str1="Alex"
v1=str1.lower()
v2=str1.upper()
print(v1,v2)
返回结果:
alex ALEX
21.lstrip方法rstrip方法和strip方法:分别去除左侧、右侧、两侧全部空格及换行、制表符等不可见字符
五星重点:★★★★★
注意:默认不加参数的时候是去除空格,如果指定的参数,则可以去除指定参数的内容
举例:移除空格
str1=" alex "
v1=str1.lstrip() #去除左侧空格
v2=str1.rstrip() #去除右侧空格
v3=str1.strip() ##去除所有空格
print(v1)
print(v2)
print(v3)
返回结果:
alex
alex
alex 举例:移除换行、制表符等不可见字符
str1="\talex\t"
v1=str1.lstrip()
v2=str1.rstrip()
v3=str1.strip()
print(v1)
print(v2)
print(v3)
返回结果:
alex
alex
alex 举例:移除指定参数内容
str1="alex"
v2=str1.rstrip("x")
print(v2)
返回结果:
ale str1="alex"
v2=str1.rstrip("e")
print(v2)
返回结果:
alex str1="alex"
v2=str1.rstrip("ex")
print(v2)
返回结果:
al str1="alex"
v2=str1.rstrip("xex")
print(v2)
返回结果:
al str1="alex"
v2=str1.rstrip("lex")
print(v2)
返回结果:
a str1="alex"
v2=str1.rstrip("elx")
print(v2)
返回结果:
a
22.maketrans方法和translate方法
这两种方法需要配合使用,先使用maketrans方法建立对应关系,然后用translate
注意:建立对应关系时的字符串长度需要一致;
例如:有2个字符串"aeiou"和"12345"
现在想把这2个字符串的字符内容一一对应,即:a->1/e->2/i->3/o->4/u->5
然后,想把一个字符串"sdaiodlffuioaouiaee"中的字符转换成对应关系的内容
举例:
str1="sdaiodlffuioaouiaee"
m=str.maketrans("aeiou","")
str2=str1.translate(m)
print(str2)
返回结果:
sd134dlff5341453122
23.partition方法、rpartition方法、split方法、rsplit方法、splitlines方法
partition方法和rpartition方法一样都是把字符串分割成3份,分割结果中包含分割符
split方法、rsplit方法也是分割字符串,但分割结果中并不包含分割符
splitlines方法只针对字符串中包含有换行符的进行分割
split方法五星重点方法★★★★★
举例:
str1="testasdsddfg"
v=str1.partition("s")
print(v)
返回结果:
('te', 's', 'tasdsddfg') str1="testasdsddfg"
v=str1.rpartition("s")
print(v)
返回结果:
('testasd', 's', 'ddfg') str1="testasdsddfg"
v=str1.split("s")
print(v)
返回结果:
['te', 'ta', 'd', 'ddfg'] str1="testasdsddfg"
v=str1.split("s",1)
print(v)
返回结果:
['te', 'tasdsddfg'] str1="testasdsddfg"
v=str1.split("s",2)
print(v)
返回结果:
['te', 'ta', 'dsddfg'] str1="asdfsssd\nuokkk\nlliipop"
v=str1.splitlines()
print(v)
返回结果:
['asdfsssd', 'uokkk', 'lliipop'] str1="asdfsssd\nuokkk\nlliipop" #使用True或False用来控制是否显示换行符
v=str1.splitlines(True)
print(v)
返回结果:
['asdfsssd\n', 'uokkk\n', 'lliipop'] str1="asdfsssd\nuokkk\nlliipop"
v=str1.splitlines(False)
print(v)
返回结果:
['asdfsssd', 'uokkk', 'lliipop']
24.startswith方法
用来判断字符串是否以指定字符开头
举例:
str1="backend 111"
v=str1.startswith("b")
print(v)
返回结果:
True str1="backend 111"
v=str1.startswith("a")
print(v)
返回结果:
False
25.swapcase方法
大小写转换,把字符串中小写字符改成大写,把大写字符改成小写
举例:
str1="aLex"
v=str1.swapcase()
print(v)
返回结果:
AlEX
26.replace方法:字符串内容替换
五星重点:★★★★★
格式:
replace(<被替换内容>,<新内容>[,替换次数])
举例:
str1="alexalexalex"
v=str1.replace("ex","aaa")
print(v)
返回结果:
alaaaalaaaalaaa str1="alexalexalex"
v=str1.replace("ex","aaa",1) #只替换1次
print(v)
返回结果:
alaaaalexalex str1="alexalexalex"
v=str1.replace("ex","aaa",2) #只替换2次
print(v)
返回结果:
alaaaalaaaalex
下面是字符串的黑科技方法
五星重点★★★★★
1.字符串的切片:使用[位置1[:位置2]]表示,位置参数是数字,称为下标,从0开始
作用:
如果只给定一个位置参数,则提取字符串中的某一个子字符
如果给定多个位置参数,则提取字符串中从位置1的字符开始(包含位置1的字符),直到位置2(不包含位置2的字符)
举例:
str1="alex"
v=str1[0]
print(v)
返回结果:
a str1="alex"
v=str1[2]
print(v)
返回结果:
e str1="alex"
v=str1[0:1] #从0开始,不包含1位置的字符
print(v)
返回结果:
a str1="alex"
v=str1[0:2] #从0开始,不包含2位置的字符
print(v)
返回结果:
al str1="alex"
v=str1[0:-1] #从0开始,直到最后,但不包含最后位置的字符
print(v)
返回结果:
ale
str1="alex"
v=str1[-2] #倒数第2个
print(v)
返回结果:
e
str1="alex"
v=str1[2:3] #从第2个开始到第3个,但不包含第3个,所以返回结果是e
print(v)
返回结果:
e
str1="alex"
v=str1[2:4] #从第2个开始,直到最后,取得最后2个字符
print(v)
返回结果:
ex
str1="alex"
k=len(str1)
v=str1[k-2:k] #取得字符串中最后2个字符,通用方法
print(v)
返回结果:
ex
2.字符串的len方法:返回字符串中由多少个字符组成
注意:在python3版本中如果字符串中的中文,则一个中文按1个计算;
在python2.7版本中,如果按照utf8编码的话,一个汉字由3个字节组成,则3个汉字,此方法返回结果是9
举例:
str1="我爱你"
v=len(str1)
print(v)
返回结果:
3
3.for循环方法:循环遍历字符串中的某一个字符
格式:
for 变量名 in 字符串:
代码块
举例:
str1="我爱你"
for love in str1:
print(love)
4.range方法:创建连续的数字,可以通过设置步长来指定不连续,但并不立即生成,当使用for循环的时候才生成
格式:
range(<数值1>[,数值2][,步长])
例如:range(100)表示创建一个从0..99的连续数值
举例:
v=range(100)
print(v)
返回结果: #在python3版本中,是如下的返回结果,如果在python2.7中,则会立即生成从0..99的连续数字
range(0,100) 如果要生成这个列表的话,需要使用for
举例:
v=range(100)
for item in v:
print(item) 通过设置步长,来生成不连续的数字
举例:
v=range(0,100,5)
for item in v:
print(item)
返回结果:
0 5 10 15...
如果要生成的是倒序:
range(100,0,-1)
for i in range(100,0,-1):
print(i) #打印输出