一、针对于字符串的操作
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