python之字符串及其方法---整理集

字符串方法

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='19')
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','19')
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="1122"   #只包含数字,返回True
v=test.isalnum()
print(v)
返回值是:
True

 

11.expandtabs方法:常用于断句。
具体作用:指定制表符宽度,在字符串中按照宽度一次读入,如果读入之中没有制表符,则再次读入,如果读入中有制表符( ),则把制表符用空格补充,补充的数量根据指定宽度减去制表符之前读入的字符串长度

格式:
expandtabs(<num>)
举例

str1="uyiujoiuerwje	0021jk	jljsdf"
v=str1.expandtabs(6)
返回结果:
uyiujoiuerwje     0021jk      jljsdf

执行过程如下:
设定读入宽度为6
开始读入6个字符:uyiujo这期间没有制表符,不操作

继续读入6个字符:iuerwj这期间没有制表符,不操作

继续读入6个字符:e 在读入期间碰到了制表符,则停止读入,由于制表符之前有个字符e占用一个位置,则其余5个位置用空格代替,最后就是e+5个空格

继续读入6个字符:0021jk这期间没有碰到制表符,不操作

继续读入6个字符:碰到了制表符,那么就用6个空格代替制表符;

继续读入6个字符:jljsdf这期间没有碰到制表符,不操作
最后输出结果:uyiujoiuerwje 0021jk jljsdf

举例:

str1="12345678	9"
v=str1.expandtabs(6)
print(v,len(v))
返回结果:
12345678    9 13


str1="1234567	89"
v=str1.expandtabs(6)
print(v,len(v))
返回结果:
1234567     89 14


str1="username	email	password
CCTV	ying@q.com	123
CCTV	ying@q.com	123
CCTV	ying@q.com	123
"
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="123"
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方法:判断字符串内容是否包含不可显示的字符,返回布尔值
例如: 制表符、 换行符
举例:字符串中包含不可显示的字符,返回false

str1="ouisad	dfj"
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="	alex	"
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","12345")
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
uokkk
lliipop"
v=str1.splitlines()
print(v)
返回结果:
['asdfsssd', 'uokkk', 'lliipop']

str1="asdfsssd
uokkk
lliipop"  #使用True或False用来控制是否显示换行符
v=str1.splitlines(True)
print(v)
返回结果:
['asdfsssd
', 'uokkk
', 'lliipop']

str1="asdfsssd
uokkk
lliipop"
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) #打印输出

 
原文地址:https://www.cnblogs.com/Kumanon/p/10366767.html