Python中string总结
为了熟悉基础知识,为了在遇到问题的时候能想起来string的某个函数,结合自己测试(如下图vs会列出所有函数以及相关说明)以及上网搜索,做一个string的总结,持续添加。ps:string本身是不可更改的,所以在初次赋值后不会变化除非重新赋值
string大小写相关
>>> str = 'string test'
>>> str.upper() #转大写
'STRING TEST'
>>> str.lower() #转小写
'string test'
>>> str.swapcase() #大小写互换
'STRING TEST'
>>> str.capitalize() #字符串首字母变大写,其余变小写
'String test'
>>> str.title() #标题化字符串,本质:分隔符(非字母都视为分隔符)分开的字符串全部做capitalize操作
'String Test'
>>> strSpec = 'hI,?mY!nAme王is*jACK&how(are@you'
>>> strSpec.title()
'Hi,?My!Name王Is*Jack&How(Are@You'
>>> import string
>>> string.capwords(str,' ') #这是模块中的方法,指定分隔符,分开后做capitalize操作
'String Test'
>>> string.capwords(str,'s')
'sTring tesT'
>>> string.capwords(str,'i')
'StriNg test'
>>> string.capwords(str,'trin')
'StrinG test'
string编码解码
对编码还了解不深先记录下来,以后用到或者遇到再专门整理编码知识。ps:python3中没有decode方法,Python3中的str是未编码的
>>> str = '字符串测试' #未编码
>>> str
'字符串测试'
>>> bs = str.encode('utf-8') #编码,编码成utf-8
>>> bs
b'\xe5\xad\x97\xe7\xac\xa6\xe4\xb8\xb2\xe6\xb5\x8b\xe8\xaf\x95'
>>> bs.decode('utf-8') #解码
'字符串测试'
string格式输出、对齐
>>> str = 'string test'
>>> str.center(20,'*') #中对齐:输出20个字符,不足用*补足,str中间对齐
'****string test*****'
>>> str.center(20) #第二个参数不填默认为空格
' string test '
>>> str.center(1) #该方法至少要有一个参数,第一个参数小于str长度默认输出str
'string test'
>>> str.ljust(20,'^') #左对齐:str左对齐,其他同center
'string test^^^^^^^^^'
>>> str.rjust(20,'$') #右对齐:str右对齐,其他同center
'$$$$$$$$$string test'
>>> str.zfill(20) #右对齐左边填充0:相当于rjust(int,'0')
'000000000string test'
string判断
>>> str = 'string123'
>>> strSpec = 'string***test'
>>> str.isalnum() #是否全是字母和数字
True
>>> str.isdigit() #是否全是数字
False
>>> str.isalpha() #是否全是字母
False
>>> str.islower() #是否全是小写,只对string中的字母进行判断
True
>>> strSpec.islower()
True
>>> str.isupper() #是否全是大写,只对string中的字母进行判断
False
>>> str.isspace() #是否全是空白字符
False
>>> str.istitle() #是否所有单词字首都是大写,结合title()理解
True
>>> str.startswith('str') #判断字符串是否以'str'开头
True
>>> str.endswith('123') #判断字符串是否以'123'结尾
True
>>> str.isidentifier() #是否是合法的标识符,实际上这里判断的是变量名是否合法
True
>>> str = '煎饼'
>>> str.isidentifier()
True
>>> 煎饼 = 'pancake'
>>> 煎饼.isalnum()
True
>>> str = '\t\\string'
>>> str.isprintable() #是否可打印,即是否包含转义字符
False
>>> str = r'\t\\string'
>>> str.isprintable()
True
string查找替换
>>> str = 'string test'
>>> str.find('t') #查找字符串,返回查到的第一个匹配的索引,没有则返回-1
1
>>> str.rfind('t') #查找字符串,返回查到的最后一个匹配的索引,没有则返回-1
10
>>> str.index('t') #查找字符串,返回查到的第一个匹配的索引,没有则报错
1
>>> str.rindex('t') #查找字符串,返回查到的最后一个匹配的索引,没有则报错
10
>>> str.count('t') #从i到j字符串的个数,i和j类似切片,可倒数,超出字符串长度不会报错
3
>>> str.count('t',3)
2
>>> str.count('t',0,3)
1
>>> str.replace('st','ST',2) #替换,'ST'替换'st',从前往后替换2处,不加数字参数默认全部替换
'STring teST'
>>> str = str.center(20,'*')
>>> str
'****string test*****'
>>> str.strip('*') #删除字符串首尾匹配的字符,不加参数默认删除空格
'string test'
>>> str.lstrip('*') #删除字符串左匹配的字符,不加参数默认删除空格
'string test*****'
>>> str.rstrip('*') #删除字符串右匹配的字符,不加参数默认删除空格
'****string test'
>>> str = '\tTab'
>>> str.count(' ')
0
>>> str.expandtabs().count(' ') #把制表符转为空格,不加参数默认8个
8
>>> str.expandtabs(5).count(' ')
5
string分割
>>> Delimiter = '-'
>>> Delimiter.join('string test') #join()将序列中的元素以指定的字符串(Delimiter)连接生成一个新的字符串
's-t-r-i-n-g- -t-e-s-t'
>>> Delimiter.join(['string','test'])
'string-test'
>>> Delimiter.join(('string','test'))
'string-test'
>>> '--'.join('string')
's--t--r--i--n--g'
>>> str = 'string test'
>>> str.split('t',2) #字符串分割,从左边开始2个't'进行分割,不填默认全部分割,
['s', 'ring ', 'est']
>>> str.rsplit('t',2) #字符串分割,从右边开始2个't'进行分割,不填默认全部分割,
['string ', 'es', '']
>>> str.partition('t') #字符串分割保留分割字符串,从左边匹配的第一个
('s', 't', 'ring test')
>>> str.rpartition('t') #字符串分割保留分割字符串,从右边匹配的第一个
('string tes', 't', '')
>>> str = 'string\ntest'
>>> str.splitlines() #按照行('\r', '\r\n', \n')分隔,默认为false,几不保留分行符
['string', 'test']
>>> str.splitlines(True) #同上,保留分行符
['string\n', 'test']
string模块中的属性和方法
string模块中的方法在这不深入不总结在此,以后遇到在总结,下面列出一些属性。
>>> import string
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'
>>> string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.digits
'0123456789'
>>> string.hexdigits
'0123456789abcdefABCDEF'
>>> string.octdigits
'01234567'
>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
>>> string.whitespace
' \t\n\r\x0b\x0c'