方法
大小写转换
capitalize():返回第一个字符转化为大写,其他为小写的字符串。
casefold():返回所有字符为小写的字符串。
title():每个单词的首字母大写,其余小写。
swapcase():将所有字母反转,大写变下写,小写变大写。
upper():将所有的字母变为大写。
lower():将所有字母变为小写。
>>> x = 'i love FishC'
>>> x.capitalize()
'I love fishc'
>>> x.casefold()
'i love fishc'
>>> x.title()
'I Love Fishc'
>>> x.swapcase()
'I LOVE fISHc'
>>> x.upper()
'I LOVE FISHC'
>>> x.lower()
'i love fishc'
对齐
center():居中对齐。
ljust():左对齐。
rjust():右对齐。
zfill():用0填充左侧。
>>> x = '有内鬼,停止交易!'
>>> x.center(15) #15为空格加字符的总字符数,若参数<len(x),则原样输出
' 有内鬼,停止交易! '
>>> x.ljust(15)
'有内鬼,停止交易! '
>>> x.rjust(15)
' 有内鬼,停止交易!'
>>> x.zfill(15)
'000000有内鬼,停止交易!'
>>> '520'.zfill(5)
'00520'
>>> '-520'.zfill(5)
'-0520'
#fillchar参数可修改填充的字符不为空格
>>> x.center(15,'淦')
'淦淦淦有内鬼,停止交易!淦淦淦'
>>> x.ljust(15,'淦')
'有内鬼,停止交易!淦淦淦淦淦淦'
>>> x.rjust(15,'淦')
'淦淦淦淦淦淦有内鬼,停止交易!'
查找
count():查找某一元素的出现次数。
find():从左往右查找下标。
rfind():从右往左查找下标。
index():从左往右查找下标。(index和rindex如果找不到目标字符会抛出异常)
>>> x = '上海自来水来自海上'
>>> x.count('海')
2
>>> x.count('海',0,5)
1
>>> x.find('海')
1
>>> x.rfind('海')
7
>>> x.index('海')
1
>>> x.rindex('海')
7
#find和rfind如果找不到目标字符会返回-1
>>> x.rfind('龟')
-1
>>> x.find('龟')
-1
#index和rindex如果找不到目标字符会抛出异常
>>> x.index('龟')
Traceback (most recent call last):
File "<pyshell#92>", line 1, in <module>
x.index('龟')
ValueError: substring not found
替换
expandtabs():把Tab制表符的缩进都替换成空格缩进。
replace(old,new,count = -1):将老字符串替换为新字符串,count是替换的次数,默认-1即全部替换。
translate(table):根据table表格的内容做出替换。
>>> code = '''
print('I love FidhC')
print('I love fyy')''' #4个空格的缩进
>>> new_code = code.expandtabs(4) #参数4表示一个Tab制表符为4个空格
>>> print(new_code)
print('I love FidhC')
print('I love fyy')
>>> '你们好,先生们和女士们。'.replace('你们','大家')
'大家好,先生们和女士们。'
#利用str.maketrans()方法制作一个转换表作为替换的依据
>>> table = str.maketrans('ABCDEFG','1234567')
>>> 'I love FishC'.translate(table)
'I love 6ish3'
#也可以直接利用str.maketrans()方法
>>> 'I love FishC'.translate(str.maketrans('ABCDEFG','1234567'))
'I love 6ish3'
#str.maketrans()的第三个参数表示将指定的字符串忽略
>>> 'I love FishC'.translate(str.maketrans('ABCDEFG','1234567','love'))
'I 6ish3'
判断
startswith():判断参数字符是否在起始位置。
endswith():判断参数字符是否在末尾位置。
>>> x = '我爱python'
>>> x.startswith('我')
True
>>> x.endswith('python')
True
>>> x.endswith('py')
False
>>> x.endswith('n')
True
>>> x.startswith('爱',1) #‘爱’字符在下标为1的位置,返回True
True
>>> x.startswith('我',1) #‘我’字符不在下标为1的位置,返回False
False
>>> x.endswith('py',0,4) #‘py’字符在(0,4)范围的末尾,返回True
True
>>> if x.startswith(('你','我','他')): #在元组中的多个元素,只要有一个符合就是True
print('python是世界上最好的语言')
python是世界上最好的语言
istitle():判断字符串中所有单词是否都首字母大写。
isupper():判断字符串中是否所有的字母都大写。
islower():判断字符串中是否所有的字母都小写。
>>> x = 'I love Python'
>>> x.istitle()
False
>>> x.isupper()
False
>>> x.upper().isupper()
True
>>> x.islower()
False
isalpha():判断字符串是否全都由字母组成。
isspace():判断字符串是否全都由空白字符组成。
isprintable():判断字符串中是否所有字符都是可以打印的。
>>> x.isalpha()
False #x中含有空格字符,所以返回False
>>> y = 'ilovepython'
>>> y.isalpha()
True
>>> " \n".isspace() #Tab、空格和换行都属于空白字符
True
isdecimal():判断数字是否为十进制
isdigit():判断数字是否为十进制
isnumeric():判断数字是否为十进制
>>> x = "12345"
>>> x.isdecimal()
True
>>> x.isnumeric()
True
>>> x.isdigit()
True
>>> x = '2²'
>>> x.isdecimal()
False
>>> x.isdigit()
True
>>> x.isnumeric()
True
>>> x = 'ⅠⅡⅢⅣⅤ'
>>> x.isdecimal()
False
>>> x.isdigit()
False
>>> x.isnumeric()
True
>>> x = "一二三四五"
>>> x.isdecimal()
False
>>> x.isdigit()
False
>>> x.isnumeric()
True
isalnum():isalpha()、isdecimal()、isdigit()、isnumeric()中只要有一个True就返回True。
>>> "abcde".isalnum()
True
>>> "一二三".isalnum()
True
isidentifier():判断字符串是否为一个合法的python标识符。
>>> "2ac".isidentifier()
False
>>> "I love python".isidentifier()
False
>>> "I_love_python".isidentifier()
True
keyword模块的函数iskeyword():判断字符串是否为python保留标识符(即关键字)。
>>> import keyword
>>> keyword.iskeyword("if")
True
>>> keyword.iskeyword("py")
False
截取
lstrip(chars = None):截掉左侧所匹配的字符。
rstrip(chars = None):截掉右侧所匹配的字符。
strip(chars = None):截掉左右两边所匹配的字符。
ps:按顺序截取到没有所匹配的字符时,会停止截取。
>>> " 左侧不要留白".lstrip()
'左侧不要留白'
>>> "右侧不要留白 ".rstrip()
'右侧不要留白'
>>> " 左右不要留白 ".strip()
'左右不要留白'
>>> "www.baidu.com".lstrip("wcom.")
'baidu.com'
>>> "www.baidu.com".rstrip("wcom.")
'www.baidu'
>>> "www.baidu.com".strip("wcom.")
'baidu'
以下两个方法要用3.9版本的python。
removeprefix(prefix):删除指定的前缀。
removesuffix(suffix):删除指定的后缀。
ps:匹配参数指定的整个字符串。
>>> "www.baidu.com".removeprefix("www.")
'baidu.com'
>>> "www.baidu.com".removesuffix(".com")
'www.baidu'
拆分与拼接
将字符串以参数指定的分割符为依据进行切割,并将切割后的结果返回一个三元组(三个元素的元组)。
partition():从左至右寻找分割符。
rpartition():从右至左寻找分割符。
>>> "www.baidu.com".partition(".")
('www', '.', 'baidu.com')
>>> "www.baidu.com/python".rpartition("/")
('www.baidu.com', '/', 'python')
split(sep = None,maxsplit = -1):默认空格为切割点,打包成列表返回。
rsplit(sep = None,maxsplit = -1):从右至左依次分割。
maxsplit:指定分割的次数。
splitlines():按行分割,以列表形式返回。
>>> "苟日新,日日新,又日新".split()
['苟日新,日日新,又日新']
>>> "苟日新 日日新 又日新".split()
['苟日新', '日日新', '又日新']
>>> "苟日新,日日新,又日新".split(",") #指定中文逗号为分割符
['苟日新', '日日新', '又日新']
>>> "苟日新,日日新,又日新".split(",",1) #设定分割次数为1
['苟日新', '日日新,又日新']
>>> "苟日新,日日新,又日新".rsplit(",",1) #从右往左分割一次
['苟日新,日日新', '又日新']
>>> "苟日新\n日日新\n又日新".splitlines() #在linux中换行为\n
['苟日新', '日日新', '又日新']
>>> "苟日新\r日日新\r又日新".splitlines() #在Mac中换行为\r
['苟日新', '日日新', '又日新']
>>> "苟日新\r日日新\r\n又日新".splitlines() #\n\r混合使用也可
['苟日新', '日日新', '又日新']
>>> "苟日新\r日日新\r\n又日新".splitlines(True) #参数为True,返回值显示换行符
['苟日新\r', '日日新\r\n', '又日新'] #默认情况下,参数还是False
join():拼接字符。
join的拼接速度远远大于"+",字符越多,"+"越慢。
>>> ".".join(["www","baidu","com"])
'www.baidu.com'
>>> "^".join(("www","baidu","com")) #也可以使用元组
'www^baidu^com'
>>> s = "FishC"
>>> s += s #用+来拼接显得很小白,建议用join()方法
>>> s
'FishCFishC'
>>> "".join(("FishC","FishC")) #用join()方法显得很大神
'FishCFishC'