本文共 5283 字,大约阅读时间需要 17 分钟。
常用的设置字符串格式方法
>>> fm = 'Hello, %s.%s are you?'>>> values = ('world','How')>>> fm % values'Hello, world.How are you?'>>> >>> from string import Template>>> tmpl = Template('Hello, $who! $how are you')>>> tmpl.substitute(who='world',how='How')'Hello, world! How are you'>>> >>> '{},{},{}'.format('zero','one','two','three')'zero,one,two'>>> '{3},{2},{1}'.format('zero','one','two','three')'three,two,one'>>> '{1},{1},{0}'.format('zero','one','two','three')'one,one,zero'>>>>>> from math import pi>>> '{name} is aprosimately {value:.2f}.'.format(value=pi,name='π')'π is aprosimately 3.14.'>>> name='pi'>>> f'{name} is aprosimately {pi:.2f}' #变量名相同时format可以简写'pi is aprosimately 3.14'>>>
方法 | 描述 |
---|---|
string.capitalize() | 返回字符串副本,将第一个字符大写 |
string.casefold() | 返回经过标准化后的字符串,标准化类似于转换为小写,但是更适用于对Unicode字符串进行不区分大小写的比较 |
string.lower() | 将字符串转换为小写,并返回结果 |
string.upper() | 将字符串中所有的字母都转换为大写,并返回结果 |
string.swapcase() | 将字符串中所有字母的大小写都反转,并返回结果 |
string.title() | 将字符串的所有单词首字母大写,并返回结果 |
string.center(width[, fillchar]) | (居中)返回一个长度为(len(string),width)的字符串。字符串中间包含当前字符串,两端用fillchar指定的字符填充(默认空格) |
string.ljust(width[, fillchar]) | (居左)返回一个长度为(len(string),width)的字符串。开头是当前字符串的副本,结尾使用fillchar字符填充,默认空格填充。 |
string.rjust(width[, fillchar]) | (居右)返回一个长度为(len(string),width)的字符串。末尾是当前字符串的副本,开头使用fillchar字符填充,默认空格填充。 |
string.zfill(width) | (补0)在字符串左边加0(但将原来打头的+或-移到开头),使其长度为width |
string.find(sub[, start[, end]]) | 返回找到的第一个子串sub的索引,没找到返回-1,可以设置搜索范围为string[start:end] |
string.rfind(sub[, start[, end]]) | 和find类似,但是返回最后一个找到的索引 |
string.index(sub[, start[], end]) | 返回指定的第一个子串sub的索引,如果没找到将引发ValueError异常,可将搜索范围限定为string[start:end] |
string.rindex(sub[,start[,end]]) | 和index()方法类似,但是返回的是第一个找到的最后一个索引 |
string.count(sub[, start[, end]]) | 计算子串sub出现的次数,可搜索范围限定string[start:end] |
string.encode([encoding[], errors]) | 返回适用指定编码和errors指定的错误处理方式对字符串进行编码的结果,参数errors的可能取值范围包括‘strict’、‘ignore’、‘replace’等 |
string.expandtabs([tabsize]) | 返回将字符串中的制表符展开为空格后的结果,tabsize默认为8 |
string.format(…) | 实现了标准化字符串格式设置。将字符串中用大括号分隔的字段替换为相应的参数,再返回结果 |
string.format_map(mapping) | 类似于使用关键字参数调用format,参数以映射方式提供的 |
string.replace(old, new[, max]) | 将字符串中的子串old替换为new,并返回结果;可以设置最大限制次数为max |
string.maketrans(x[, y[, z]]) | 一个静态方法,创建一个供translate使用的转换表。如只指定一个参数x,它必须是从字符或序数到Unicode序数或None(用于删除)的映射;也可以使用两个表示源字符和目标字符的字符串调用它;还可以提供第三个参数,它指定要删除的字符 |
string.translate(table) | 根据转换表table(这是使用maketrans创建的)对字符串中所有的字符进行转换,并返回结果 |
string.partition(sep) | 在字符串中搜索sep,并返回元组(sep前面部分,sep,sep后面部分) |
string.rpartition(sep) | 与partition相同,但从右往左 |
string.split(sep[,maxsplit]) | 返回一个列表,其中包含以sep为分隔符对字符串进行划分的结果(如果没有指定sep,将以所有空白符为分隔符进行划分);还可以将最大划分次数限制为maxsplit |
string.rsplit(sep[, maxsplit]) | 与split相同,但指定了参数maxsplit,从右往左计算划分次数 |
string.splitlines([keepends]) | 返回一个列表,其中包含字符串的所有行;如果参数为True,将包含换行符 |
string.join(sequence) | 与split相反,将string和sequence中所有的元素合并,并返回结果 |
string.strip([chars]) | 将字符串开头和结尾的所有的char字符都删除(默认为所有空白符),并返回结果 |
string.rstrip([chars]) | 将字符串末尾所有的char字符都删除(默认为所有空白符),并返回结果 |
string.lstrip([char]) | 将开头的chars(默认为空白字符,空格,制表符等)都删除,并返回结果 |
string.startswith(prefix[, start[, end]]) | 检查字符串是否以prefix打头;可以将匹配范围限制在索引start和end之间 |
string.endswith(suffix[, start[, end]]) | 检查字符串是否以suffix结尾,还可以使用索引start和end来指定匹配范围 |
判断字符串是否满足特点条件
方法 | 描述 |
---|---|
string.isalnum() | 检查字符串中的字符是否都是字母或数(判断不带符号字符串) |
string.isalpha() | 检查字符串中的字符是否都是字母 |
string.isdecimal() | 检查字符串中的字符是否都是十进制数 |
string.isdigit() | 检查字符串中的字符是否都是数字 |
string.isnumeric() | 检查字符串中的所有字符是否都是数字字符 |
string.isidentifier() | 检查字符串是否可以用作Python标识符 |
string.islower() | 检查字符串中的字母都是小写的,字符串可以包含非字母的字符 |
string.isupper() | 检查字符串中的字母都是大写的 |
string.isprintable() | 检查字符串中的字符是否都是可打印的 |
string.isspace() | 检查字符串中的字符是否都是空白字符 |
string.istitle() | 检查字符串中位于非字母后面的字母都是大写的,且其他所有字母都是小写的 |
常用方法举例
center()>>> 'center'.center(10)' center '>>> 'center'.center(1)'center'>>> 'center'.center(10,'-')'--center--'>>>
find()
如果存在则返回第一个找到的索引号,否则返回-1。可以指定字符串搜索的索引范围。>>> number = '01234567'>>> number.find('1234')1>>> number.find('67')6>>> number.find('678')-1>>> number.find('67',5)6>>> number.find('67',5,6)-1>>>
join()
用于合并序列的元素,作用和split相反。注意元素必须都是字符串。>>> seq = ['1', '2', '3',]>>> sep = '+'>>> sep.join(seq)'1+2+3'>>> 'cc'.join(seq)'1cc2cc3'>>> seq = [1, 2]>>> 'cc'.join(seq)Traceback (most recent call last): File "", line 1, in 'cc'.join(seq)TypeError: sequence item 0: expected str instance, int found>>>
split()
作用与join相反,用于将字符串拆分为序列。>>> '1cc2cc3'.split('cc')['1', '2', '3']>>> '1 2 3 '.split()['1', '2', '3']>>>
lower()&upper()
>>> 'Cc'.lower()'cc'>>> 'Cc'.upper()'CC'>>>
replace
字符串替换>>> '3322'.replace('22','tt').replace('33','22').replace('tt','33')'2233'>>>
translate
translate()只能进行单字符替换,一次可以替换多个字符。 替换前使用maketrans()创建转换表 maketrans()可以传入3个参数,前面两个是替换字符的对应关系,必填项;第三个是设置需要删掉字符的可选项。>>> table = str.maketrans('hw?','HW!',' ')>>> 'hello, world?'.translate(table)'Hello,World!'>>>
format_map
>>> phonebook = { '张三':'10086','李四':'10010'}>>> "张三的号码是{张三}".format_map(phonebook)'张三的号码是10086'>>> temp = '''{title} {title}
{text}
'''>>> data = { 'title':'Home Page','text':'hello world'}>>> print(temp.format_map(data))Home Page Home Page
hello world
>>>
string.isdecimal()、string.isdigit()、string.isnumeric()的区别:
isdigit()True: Unicode数字,byte数字(单字节),全角数字(双字节)False: 汉字数字,罗马数字,小数Error: 无 isdecimal() True: Unicode数字,全角数字(双字节) False: 罗马数字,汉字数字,小数Error: byte数字(单字节) isnumeric() True: Unicode数字,全角数字(双字节),罗马数字,汉字数字 False: 小数 Error: byte数字(单字节)
string.istitle()用法:
>>> 'A0A1AAaaa'.istitle()False>>> 'A0A1A Aaaa'.istitle()True>>>
转载地址:http://iuiti.baihongyu.com/