汇总:
- capitalize() :将开头首字母改为大写,如果字符串开头非小写字母(如开头为大写字母、数字、空格等)则无效。
- title():以空格、符号、数字等隔开的首字母大写
- upper():所有字母全大写
- lower():所有字母全小写
- swapcase():全部字符大小写翻转
- casefold():与lower()类似,将字串转换为小写,可用于大小写不敏感字串匹配
- center(width[, fillchar]):返回指定宽度width,以当前字串居中的字串,左右不足部分以fillchar来填充, 如果width不大于原字串宽度,则返回原字串
- ljust(width[, fillchar]):使用指定字符填充,使字符串左对齐
- rjust(width[, fillchar]):使用指定字符填充,使字符串右对齐
- -zfill(width):字符串右对齐,前面填充0,如果width小于原有子串长度,则返回原有子串
- count(sub[, start[, end]]):返回子串出现频率
- 字符串断句:str.expandtabs(tabsize=8)
- replace(old, new[, max]):字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
- 对应关系替换
- strip([chars]):移除头尾指定字符(默认空格)
- lstrip([chars]):去左侧指定字符(默认空格)
- rstrip([chars]):去右侧指定字符(默认空格)
- split(str=”“, num=string.count(str)):将字符串分割为列表,如果参数num 有指定值,则仅分隔 num+1 个子字符串
- partition(str):根据指定的分隔符将字符串分割成三元数组
- splitlines([keepends]):按照行(‘\r’, ‘\r\n’, \n’)将字符串分割成列表,keepends – 在输出结果里是否去掉换行符(‘\r’, ‘\r\n’, \n’),默认为 False,不包含换行符,如果为 True,则保留换行符。
- join(sequence) 将序列中的元素以指定的字符连接生成一个新的字符串,参数sequence – 要连接的元素序列;
- find(sub, start, end):返回符合sub的第一个索引(即通过sub找索引),可通过start 和end 指定索引范围,找不到sub则返回-1。start和 end可以不填入,默认填入的sub后的第一个为strat,第二个为end。
- rfind(str, beg=0 end=len(string)):查找字符串最后一次出现的位置(从右向左查询)
- index(sub, start, end)和find使用方法一样,但是如果找不到会报错
- isalpah()是否全由字母字符串组成
- isdigit()是否全由数字组成
- isalnum()是否全由数字、字母、数字和字母组成
- isupper()是否全大写
- islower()是否全小写
- istitle()被空格、数字、符号等隔开的首字母是否大写
- isspace()是否只由空格组成
- isascii()是否为ascii码,判断时必须是字符串形式,否则会报错
- isdecimal()字符是否只包含十进制字符串(我们正常使用的数字)
- isidentifier()判断该字符串设为变量名是否合法,但是不太准确,它的判断方式应该不包含内置变量。可以用 keyword判断是否为内置函数,但是keyword只能判断相应一部分范围。
- keyword.iskeyword(s)可以判断是否为内置关键字,但是不全面,比如print就可以通过测试,下图为官方给出的内置关键字。
- isnumeric()unicode对象字符串是否只由数字组成
- isprintable()是否为可打印字符串
- startswith(prefix, start, end):字符串是否是以prefix指代的字符串开始,可以指定开始、结束范围。
- endswith(suffix, start, end):字符串是否是以prefix指代的字符串开始,可以指定开始、结束范围。
- 关于isdigit、isdecimal、isnumeric的区别:
字母操作
capitalize() :将开头首字母改为大写,如果字符串开头非小写字母(如开头为大写字母、数字、空格等)则无效。
>>> s='i am sam'
>>> s.capitalize()
'I am sam'
>>>
title():以空格、符号、数字等隔开的首字母大写
>>> s='you are-welcom,sam.'
>>> s.title()
'You Are-Welcom,Sam.'
upper():所有字母全大写
>>> s='ab1Cd*ef(gH.'
>>> s.upper()
'AB1CD*EF(GH.'
lower():所有字母全小写
>>> s.lower()
'ab1cd*ef(gh.'
swapcase():全部字符大小写翻转
>>> s='ab1Cd*ef(gH.'
>>> s.swapcase()
'AB1cD*EF(Gh.'
casefold():与lower()类似,将字串转换为小写,可用于大小写不敏感字串匹配
与lower()不同的是:lower方法只对ASCII编码,对于其他语言(非汉语或英文)可以使用casefold()进行大小写转换。
‘ß’是德语字符,其小写为’ss’
>>> s='ß'
>>> s.casefold()
'ss'
>>> s.lower()
'ß'
center(width[, fillchar]):返回指定宽度width,以当前字串居中的字串,左右不足部分以fillchar来填充, 如果width不大于原字串宽度,则返回原字串
>>> s='abc'
>>> s.center(4,'*')
'abc*'
>>> s.center(5,'*')
'*abc*'
>>> s.center(11,'*')
'****abc****'
ljust(width[, fillchar]):使用指定字符填充,使字符串左对齐
rjust(width[, fillchar]):使用指定字符填充,使字符串右对齐
>>> s='icbc'
>>> s.ljust(6,'*')
'icbc**'
>>> s.rjust(6,'*')
'**icbc'
-zfill(width):字符串右对齐,前面填充0,如果width小于原有子串长度,则返回原有子串
>>> s='icbc'
>>> s.zfill(10)
'000000icbc'
>>> s.zfill(10)
'000000icbc'
>>> s='-98'
>>> s.zfill(10)
'-000000098'
>>> s='--98'
>>> s.zfill(10)
'-000000-98'
>>> s='&&98'
>>> s.zfill(10)
'000000&&98'
count(sub[, start[, end]]):返回子串出现频率
>>> s='aabbccddabcdaaaa'
>>> s.count('a')
7
>>> s.count('aa')
3
>>> s.count('aaa')
1
>>> s.count('aaaa')
1
>>> s.count('aaaaa')
0
字符串断句:str.expandtabs(tabsize=8)
>>> test1 = 'kkkkkkkl\t'
>>> test2 = 'name\tage\tgender\ttom\t23\tmale\tlucy\t18\t'
>>> test1.expandtabs(20)
'kkkkkkkl '
>>> test2.expandtabs(20)
'name age gender tom 23 male lucy 18 '
>>> test2.expandtabs(10)
'name age gender tom 23 male lucy 18 '
replace(old, new[, max]):字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
>>> s = "This is a good new.That is so bad.It is a big apple.It is a dog."
>>> s.replace('is','was')
'Thwas was a good new.That was so bad.It was a big apple.It was a dog.'
>>> s.replace('is','was',3)
'Thwas was a good new.That was so bad.It is a big apple.It is a dog.'
对应关系替换
>>> test = "abcde"
>>> test1 = "12345"
>>> sjd = "ayewurbnsmrcksjfdorkgelg"
>>> qwe=str.maketrans('abcde','12345')
>>> new_sjd=sjd.translate(qwe)
>>> qwe
{97: 49, 98: 50, 99: 51, 100: 52, 101: 53}
>>> new_sjd
'1y5wur2nsmr3ksjf4orkg5lg'
strip([chars]):移除头尾指定字符(默认空格)
>>> str1 = '**** beauty ********'
>>> str1.strip('*')
' beauty '
lstrip([chars]):去左侧指定字符(默认空格)
>>> str1.lstrip('*')
' beauty ********'
rstrip([chars]):去右侧指定字符(默认空格)
>>> str1.rstrip('*')
'**** beauty '
split(str=”“, num=string.count(str)):将字符串分割为列表,如果参数num 有指定值,则仅分隔 num+1 个子字符串
>>> str1 = 'safdfg\nsfegewh\n12341y\n'
>>> list1 = str1.split('\n',3)
>>> list1
['safdfg', 'sfegewh', '12341y', '']
partition(str):根据指定的分隔符将字符串分割成三元数组
>>> test = 'yourswater'
>>> test.partition('s')
('your', 's', 'water')
splitlines([keepends]):按照行(‘\r’, ‘\r\n’, \n’)将字符串分割成列表,keepends – 在输出结果里是否去掉换行符(‘\r’, ‘\r\n’, \n’),默认为 False,不包含换行符,如果为 True,则保留换行符。
>>> str1 = 'ab c\n\nde fg\rkl\r\n'
>>> str1.splitlines(False)
['ab c', '', 'de fg', 'kl']
>>> str1.splitlines(True)
['ab c\n', '\n', 'de fg\r', 'kl\r\n']
join(sequence) 将序列中的元素以指定的字符连接生成一个新的字符串,参数sequence – 要连接的元素序列;
>>> list1 = ['hels','sdfg','dsg','345']
>>> '-'.join(list1)
'hels-sdfg-dsg-345'
字符/字符串寻找
find(sub, start, end):返回符合sub的第一个索引(即通过sub找索引),可通过start 和end 指定索引范围,找不到sub则返回-1。start和 end可以不填入,默认填入的sub后的第一个为strat,第二个为end。
>>> s = 'a1ch2ie283WNDLEWKUI3dheiuei'
>>> s.find('h')
3
>>> s.find('h',4)
21
>>> s.find('h',4,10)
-1
>>> s.find('h2')
3
rfind(str, beg=0 end=len(string)):查找字符串最后一次出现的位置(从右向左查询)
>>> s = 'NOSTALGIAL'
>>> s.rfind('AL')
8
>>> s.find('AL')
4
index(sub, start, end)和find使用方法一样,但是如果找不到会报错
>>> s = 'a1ch2ie283WNDLEWKUI3dheiuei'
>>> s.index('h')
3
>>> s.index('h',4)
21
>>> s.index('h',4,10)
Traceback (most recent call last):
File "<pyshell#106>", line 1, in <module>
s.index('h',4,10)
ValueError: substring not found
>>> s.index('h2')
3
条件判断
注:条件判断返回的皆是bool
isalpah()是否全由字母字符串组成
>>> s = 'a1ch2ie283WNDLEWKUI3dheiuei'
>>> s.isalpha()
False
>>> s='abcdefg'
>>> s.isalpha()
True
isdigit()是否全由数字组成
>>> s='asdf1234'
>>> s.isdigit()
False
>>> s='1234'
>>> s.isdigit()
True
isalnum()是否全由数字、字母、数字和字母组成
>>> s='asdf1234'
>>> s.isalnum()
True
>>> s='1234'
>>> s.isalnum()
True
>>> s='asdf'
>>> s.isalnum()
True
>>> s='asdf&1234'
>>> s.isalnum()
False
>>> s='123*456'
>>> s.isalnum()
False
>>>
isupper()是否全大写
>>> s = '*WQDWQ:"<.LLJU'
>>> s.isupper()
True
>>> s = 'eewcwe()wiud*'
>>> s.isupper()
False
islower()是否全小写
>>> s = 'eewcwe()wiud*'
>>> s.islower()
True
>>> s = '*WQDWQ:"<.LLJU'
>>> s.isupper()
True
istitle()被空格、数字、符号等隔开的首字母是否大写
>>> s = '1J6u8I9o'
>>> s.istitle
>>> s.istitle()
False
>>> s = '1T6H8G4F"W/F'
>>> s.istitle()
True
isspace()是否只由空格组成
>>> s = ''
>>> s.isspace()
False
>>> s = ' '
>>> s.isspace()
True
>>> s = ' j '
>>> s.isspace()
False
isascii()是否为ascii码,判断时必须是字符串形式,否则会报错
#ascii码的判定,官方解释是在U+0000-U+007F之间的都是ascii码
#官方文档:https://docs.python.org/3/library/stdtypes.html?highlight=isascii#str.isascii
>>> ord('a') #将单个字符转为ascii码
97
>>> ord('哈')
21704
>>> s = 21704
>>> s.isascii()
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
s.isascii()
AttributeError: 'int' object has no attribute 'isascii' #纯数字会报错 必须是字符串
>>> s = '21704'
>>> s.isascii()
True
>>> s = ''
>>> s.isascii()
True
>>> s = ' '
>>> s.isascii()
True
>>> s = 'U0000'
>>> s.isascii()
True
>>> s = '/87u/09o'
>>> s.isascii()
True
isdecimal()字符是否只包含十进制字符串(我们正常使用的数字)
#在python中,二进制以0b开头表示,八进制用0o开头表示,十六进制用0x开头表示
>>> s = '120u'
>>> s.isdecimal()
False
>>> s = '010101001'
>>> s.isdecimal()
True
>>> s = '89000'
>>> s.isdecimal()
True
isidentifier()判断该字符串设为变量名是否合法,但是不太准确,它的判断方式应该不包含内置变量。可以用 keyword判断是否为内置函数,但是keyword只能判断相应一部分范围。
>>> s = 'print'
>>> s.isidentifier()
True
>>> s = 'def'
>>> s.isidentifier()
True
>>> s = 'python'
>>> s.isidentifier()
True
>>> s = 'def_1'
>>> s.isidentifier()
True
>>> s = '1'
>>> s.isidentifier()
False
>>> s = '1haha'
>>> s.isidentifier()
False
keyword.iskeyword(s)可以判断是否为内置关键字,但是不全面,比如print就可以通过测试,下图为官方给出的内置关键字。
>>> import keyword
>>> keyword.iskeyword(s)
False
>>> keyword.iskeyword(print)
False
>>> keyword.iskeyword('print')
False
>>> keyword.iskeyword('def')
True
>>> keyword.iskeyword('class')
True
isnumeric()unicode对象字符串是否只由数字组成
>>> s = '123'
>>> s.isnumeric()
True
>>> s = 'u'
>>> s.isnumeric()
False
isprintable()是否为可打印字符串
>>> s = 'hah'
>>> s.isprintable()
True
>>> s = '123'
>>> s.isprintable()
True
startswith(prefix, start, end):字符串是否是以prefix指代的字符串开始,可以指定开始、结束范围。
>>> s = 'ewfwefew23f3w2e'
>>> s.startswith('q')
False
>>> s.startswith('e')
True
>>> s.startswith('e',4)
True
>>> s.startswith('e',3,5)
False
endswith(suffix, start, end):字符串是否是以prefix指代的字符串开始,可以指定开始、结束范围。
>>> s = 'ewfwefew23f3w2e'
>>> s.endswith('e')
True
>>> s.endswith('e',3,7)
True
>>> s.endswith('e',3,9)
False
关于isdigit、isdecimal、isnumeric的区别:
isdigit():
True:unnicode数字、byte数字(单字节)、全角数字(双字节)
False:汉字数字、罗马数字
error:无
isdecimal():
True:unnicode数字、全角数字(双字节)
False:汉字数字、罗马数字
error:byte数字(单字节)
isnumeric():
True:unnicode数字、汉字数字、全角数字(双字节)
False:罗马数字
error:byte数字(单字节)
>>> s = '123' #unicode
>>> s.isdigit()
True
>>> s.isdecimal()
True
>>> s.isnumeric()
True
>>> s = '123' #全角(双字节)
>>> s.isdigit()
True
>>> s.isdecimal()
True
>>> s.isnumeric()
True
>>> s = b'1' #bytes数字
>>> s.isdigit()
True
>>> s.isdecimal()
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
s.isdecimal()
AttributeError: 'bytes' object has no attribute 'isdecimal'
>>> s.isnumeric()
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
s.isnumeric()
AttributeError: 'bytes' object has no attribute 'isnumeric'
s = 'II' #罗马数字
>>> s.isdigit()
False
>>> s.isdecimal()
False
>>> s.isnumeric()
False
>>> s = '四' #汉字数字
>>> s.isdigit()
False
>>> s.isdecimal()
False
>>> s.isnumeric()
True