Python Note 400 - String#
:date: 2017-02-13
:modified: 2022-05-31
:slug: python-note-400-string
:tags: python, note, string
:category: Development
:author: Dormouse Young
:summary: Python note series 400 - string
函数#
capitalize() 首字符大写
center(width) 返回一个原字符串居中,并使用空格填充至长度 width 的新字串
count(str, beg=0, end=len(string)) 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
decode(encoding=‘UTF-8’, errors=‘strict’) 以 encoding 指定的编码格式解码string ,如果出错默认报一个 ValueError 的异常 ,除非 errors 指定的是 ‘ignore’ 或者 ‘replace’
encode(encoding=‘UTF-8’, errors=‘strict’) 以 encoding 指定的编码格式编码string,如果出错默认报一个 ValueError 的异常,除非 errors 指定的是 ‘ignore’ 或者 ‘replace’
endswith(obj, beg=0, end=len(string)) 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束 ,如果是,返回 True ,否则返回 False.
expandtabs(tabsize=8) 把字符串string中的tab符号转为空格,默认的空格数tabsize是 8.
find(str, beg=0, end=len(string)) 检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内 ,如果是返回开始的索引值,否则返回-1
index(str, beg=0, end=len(string)) 跟find()方法一样,只不过如果str不在 string中会报一个异常.
isalnum() 如果 string 至少有一个字符并且所有字符都是字母或数字则返回True,否则返回 False
isalpha() 如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False
isdecimal() 如果 string 只包含十进制数字则返回True 否则返回 False.
isdigit() 如果 string 只包含数字则返回 True 否则返回 False.
islower() 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都 是小写,则返回True,否则返回 False
isnumeric() 如果 string 中只包含数字字符,则返回True,否则返回 False
isspace() 如果 string 中只包含空格,则返回True,否则返回 False.
istitle() 如果 string 是标题化的(见 title())则返回 True,否则返回 False
isupper() 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都 是大写,则返回True,否则返回 False
join(seq) Merges (concatenates)以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合 并为一个新的字符串
ljust(width) 返回一个原字符串左对齐,并使用空格填充至长度width 的新字符串
lower() 转换 string 中所有大写字符为小写
lstrip() 截掉 string 左边的空格.
string.partition(str) 有点像 find()和 split()的结合体,从 str 出现的第一个位置起,把字符 串string分 成一个3元素的元组(string_pre_str,str,strig_post_str),如果 string中不包含str则string_pre_str == string.
replace(str1, str2,num=string.count(str1)) 把 string中的str1替换成str2,如果num指定,则替换不超过 num 次.
rfind(str, beg=0,end=len(string)) 类似于 find()函数,不过是从右边开始查找.
rindex( str, beg=0,end=len(string)) 类似于 index(),不过是从右边开始.
rjust(width) 返回一个原字符串右对齐,并使用空格填充至长度width 的新字符串
rpartition(str) 类似于 partition()函数,不过是从右边开始查找.
rstrip() 删除 string 字符串末尾的空格.
split(str=””, num=string.count(str)) 以 str 为分隔符切片string,如果num有指定值,则仅分隔num个子字符串
splitlines(num=string.count(‘\n’)) 按照行分隔,返回一个包含各行作为元素的列表,如果num指定则仅切片 num 个行.
startswith(obj, beg=0,end=len(string)) 检查字符串是否是以 obj 开头,是则返回True,否则返回 False。如果beg 和 end 指定值 ,则在指定范围内检查.
strip([obj]) 在string 上执行 lstrip()和 rstrip().
swapcase() 翻转 string 中的大小写
title() 返回“标题化”的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())
translate(str, del=””) 根据 str 给出的表(包含 256 个字符)转换 string 的字符,要过滤掉的字符放到 del 参数中
upper() 转换 string 中的小写字母为大写
zfill(width) 返回长度为width的字符串,原字符串 string 右对齐,前面填充0
字符串的替换#
replace#
replace 是内置函数或者方法,其原型为:s.replace(old, new, count=-1, /) 。
[1]:
# 替换前两个空格。
s = 'one two one two one'
print(s.replace(' ', '-', 2))
one-two-one two one
[2]:
# 字符串本身不会改变
s
[2]:
'one two one two one'
[3]:
# 链式调用
s.replace('one', '111').replace('two', '222')
[3]:
'111 222 111 222 111'
translate#
translate 是内置函数或者方法,其原型为:s.translate(table, /) 。用于单个字的,一对一或者一对多的替换。
[4]:
# 一对一
s = 'one two one two one'
s.translate(str.maketrans({'o': 'i', 't': 'f'}))
[4]:
'ine fwi ine fwi ine'
[5]:
# 一对多
s = '一 二 一 二'
s.translate(str.maketrans({'一': 'one', '二': None}))
# XXXne wXXX XXXne wXXX XXXne
[5]:
'one one '
[6]:
# 字母表替换,第一个参数和第二参数一一对应,第三个参数是要删除的字母
s = 'one two one two one'
s.translate(str.maketrans('ow', 'XY', 'ne'))
[6]:
'X tYX X tYX X'
正则表达式#
更多内容参见:https://docs.python.org/3/library/re.html#re.sub
[7]:
import re
s = 'aaa@xxx.com bbb@yyy.com ccc@zzz.com'
re.sub('@[a-z]*.com', '@my.com', s, 2)
[7]:
'aaa@my.com bbb@my.com ccc@zzz.com'
[8]:
# subn 返回一个无组,元组第一个元素是被替换的字符串,第二个是替换的数量
s = 'aaa@xxx.com bbb@yyy.com ccc@zzz.com'
re.subn('@[a-z]*.com', '@my.com', s)
[8]:
('aaa@my.com bbb@my.com ccc@my.com', 3)