一、针对于字符串的操作

1.字符串大小转换的操作:


lower()        #把大写字母全部转换成小写

upper()        #把小写字母全部转换成大写

swapcase()     #大写转成小写,小写转成大写

capitalize()   #把第一个字母转成大写字母

title()        #把每个单词首字母大写,以空格分割

casefold()     #把所有字母转成小写,和lower()一样



2.计数,查找,替换



#计重复的字符串
count(str)     # 统计重复str的次数,区分大小写,如果没有返回0

#查找字符串下标
find(str)      #查找str的下标,如果没有返回-1

rfind(str)     #从右边开始查找str的下标,如果没有返回-1

index(str)     #跟find一样,返回str的下标,一点不同index找不到会抛出错误ValueError

rindex(str)    #从右边开始

#替换字符串
replace(old,new,count)     #把old替换成new,count为替换次数(有多个重复内容的字符串用到),count也可缺省(全部替换)

expandtabs(tabsize=8)      #把字符串中的\t替换成空格,默认为tabsize=8(8个空格),可以指定



3.字符串空格的操作



#去除空格或其他字符的操作
strip(str)       #去除左右str(左右不一样多,会循环删除),如果不填str默认为空格,换行符和制表符,注:strip指定的字符串,是以每个字符循环去除的

lstrip(str)      #去除左边str

rstrip(str)      #去除右边str

#加空格
center(width)    #长度为width宽度(如果宽度不够则无空格填充),字符串居中显示

ljust(width)     #长度为width宽度,字符串左对齐方式显示

rjust(width)     #长度为width宽度,字符串右对齐方式显示



4.字符串分割成列表,列表元素组合成字符串



#分割为列表
split(sep=str,maxsplit=-1)   #以str分割成一个列表,maxsplit指定分割次数(-1表示有多少str就分割几次),
注:不保留str分割符,例: '1 2 3'.split(' ') 结果:['1','2','3']

splitlines(False)    #以\n(换行符)分割为一个列表,False表示不包含\n的分割,True表示包含\n的分割(保留在前一个列表前一个元素)
注:splitlines和split基本相似,唯一不同是splitlines可以保留\n而split不保留


#分割为元祖
partition(str)    #以str分割为一个元祖,中间的元素为分割符,从左至右,字符串有多个相同的字符以第一个分割
注:保留str分割符,例:'123'.partition('2') 结果:('1','2','3')

rpartition(str)   #往右边开始



#把列表元素组合成字符串
 '+'.join(list1)    #以字符+组合list1列表每个元素,前提是list1中必须全是字符串,否则抛TypeError

例:
>>> '+'.join(['1','2','3'])
'1+2+3'
有整型数据时候:
>>> '+'.join(['1','2','3',4])
Traceback (most recent call last):
  File "<pyshell#215>", line 1, in <module>
    '+'.join(['1','2','3',4])
TypeError: sequence item 3: expected str instance, int found



5.编码



encode(编码格式)    #把该字符串以该编码格式,转换成该编码的bytes,编码格式:utf8,gbk



6.以0填充字符串



zfill(number)      #以0填充左边,number为字符串的长度,如果number小于字符串长度不会有0填充
例:
>>> '1001'.zfill(8)
'00001001'
>>> '1001'.zfill(3)
'1001'



7.字符转换

总结:replace也可以完成该转换内容,用处感觉不大



translate(table)    #转换字符串某特定内容,table放的是映射表,str.maketrans('1','2')制造映射表

 例:
>>> 'aaabbbccc'.translate(str.maketrans('b','*'))
'aaa***ccc'
>>> a = str.maketrans('b','*')
>>> a   #是ASCII码
{98: 42}
>>> 'aaabbbccc'.translate(a)
'aaa***ccc'



8.格式化

format()   #像print一样,输出内容的



例:

顺序的:   #括号里的顺序是什么样,打印就是什么样
>>> '姓名:{}   年龄:{}'.format('zezhou',18)

'姓名:zezhou   年龄:18'

 
以下标:   #字符串里可以指定括号里元素的下标,如果下标超出会抛出IndexError
>>> '姓名:{0}   年龄:{1}'.format('zezhou',18)

'姓名:zezhou   年龄:18'

>>> '姓名:{1}   年龄:{0}'.format('zezhou',18)

'姓名:18   年龄:zezhou'


以变量名:  #更灵活,但是写的内容也就多了
>>> '姓名:{name}   年龄:{age}'.format(age=18,name='zezhou')

'姓名:zezhou   年龄:18'



#还有格式化参数,待写-------------

 

 

二、针对于字符串的判断

注:以下都是用于判断,只会返回True或False

1.判断是否以该字符串开头结尾



startswith(str,start,end)     #判断是否是以str开头,start为开始位置,end为结束位置(start和end空缺表示整个字符串)

例:
>>> a
'123456789'
>>> a.startswith('123')
True
>>> a.startswith('234')
False
>>> a.startswith('789',len(a)-3,len(a))     #也可使其判断结尾内容
True

endswith(str,start,end)       #判断是否以str字符串结束



 

2.判断字符串是否是全数字,全空格和全字符(不包含数字)

判断数字:



isdigit()     #判断字符串是否为全数字,全数字返回True

isdecimal()   #判断是否只包含十进制数字

isnumeric()   #判断字符串是否只包含数字和汉字数字



例:
>>> b'123'.isdigit()
True

#当为bytes类型数字,isdecimal就不行了
>>> b'123'.isdecimal()
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
b'123'.isdecimal()
AttributeError: 'bytes' object has no attribute 'isdecimal'

#unicode类型,isdecimal还可以用
>>> u'1231232131'.isdecimal()
True

#isnumeric示例
>>> '123四六'.isnumeric()
True
>>> '123四六'.isdigit()
False
>>> '123四六'.isdecimal()
False



总结:只有isdigit()可以判断bytes类型,unicode类型只有isdigit()不可以判断,数字加汉字数字只有isnumeric()可以判断

判断空格:



isspace()      #判断字符串是否只有空格

例:
>>> '1 '.isspace()
False
>>> '   '.isspace()    #1个或多个空格,返回True
True
>>> ''.isspace()       #空字符串返回False
False



全字母:



isalpha()      #全字母(大小写均可),返回True



其他得判断:   #感觉并不常用



isalnum()      #全字母,全数字或字母和数字混合,都返回True

islower()      #不包含大写字母,任意组合返回True

istitle()      #每个单词首字母大写(可以任意字符),返回True

isupper()      #每个字母都是大写(可以任意字符),返回True