【Python基础2】python字符串方法及格式设置

1 设置字符串格式

常用的设置字符串格式方法

>>> 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'
>>>

2 字符串方法

方法描述
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 "<pyshell#65>", line 1, in <module>
    '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 = '''<html>
<head><title>{title}</title></head>
<body>
<h1>{title}</h1>
<p>{text}</p>
</body>'''
>>> data = {'title':'Home Page','text':'hello world'}
>>> print(temp.format_map(data))
<html>
<head><title>Home Page</title></head>
<body>
<h1>Home Page</h1>
<p>hello world</p>
</body>
>>>

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
>>>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值