一. 字符串常用函数
1. find() rfind() index() rindex() count()
find() rfind() 分别用来查找一个字符串在当前的字符串指定的范围(默认是整个字符串)中,首次和最后一次出现的位置,如果不存在则返回-1;
index() rindex() 分别用来返回当前字符串指定范围中首次和最后一次出现的位置,如果不存在则抛出异常;
count() 用来返回一个字符串在当前字符串中出现的次数,不存在返回0;
print('Java, Python, C++, R, Go'.find('o'))
print('Java, Python, C++, R, Go'.rfind('o'))
print('Java, Python, C++, R, Go'.find('x'))
print('Java, Python, C++, R, Go'.rfind('x'))
print('Java, Python, C++, R, Go'.index('o'))
print('Java, Python, C++, R, Go'.rindex('o'))
# print('Java, Python, C++, R, Go'.index('x')) # 报错
# print('Java, Python, C++, R, Go'.rindex('x')) # 报错
print('Java, Python, C++, R, Go'.count(','))
2. split() rsplit() partition() rpartition()
split() rsplit() 分别用来以指定字符分隔符,从字符串左端和字符串右端开始将其分割成多个字符串,返回包含分隔结果的列表;
partition() rpartition() 分别用来以指定字符串为分隔符将原字符串分割成三部分,分别为分隔符前字符串,分隔符字符串,分隔符后字符串,如果指定的分隔符不在原字符串中,则返回原字符串和两个空字符串组成的元祖。
print('Java, Python, C++, R, Go'.split('.'))
print('Java, Python, C++, R, Go'.rsplit(','))
print('Java, Python, C++, R, Go'.partition('x'))
print('Java, Python, C++, R, Go'.rpartition('x'))
对于 split() rsplit() 如果不指定分隔符,则字符串中的任何空白符号都将被认定为分隔符,返回包含最终分割结果的列表。并且,split() rsplit() 可以指定分割最大次数。
print('Java, Python, C++, R, Go'.split('o', 1))
# 从前往后遍历,在第一个 o 处分隔
print('Java, Python, C++, R, Go'.rsplit(',', 1))
# 从后往前遍历,在最后一个 , 处分隔
3. join()
join() 用来将列表或其他可迭代对象中多个字符串进行连接,并在相邻两个字符串之间插入指定字符串。(使用 + 也能连接字符串,但效率低下,优先使用 join ())
' '.join(['Java', 'Python', 'C++', 'R', 'Go'])
# 将数组转化为字符串,每个元素之间用' '(空格分隔)
4. lower() upper() capitalize() title() swapcase()
以上方法,用来将字符串转换为小写(lower()),大写字符串(upper()),将字符串首字母变为大写(capitalize()),将每一个单词首字母变为大写(title())以及大小写转化(swapcase())。
print(' '.join(['Java', 'Python', 'C++', 'R', 'Go']).lower())
print(' '.join(['Java', 'Python', 'C++', 'R', 'Go']).lower().upper())
print(' '.join(['Java', 'Python', 'C++', 'R', 'Go']).lower().upper().swapcase())
print(' '.join(['Java', 'Python', 'C++', 'R', 'Go']).lower().upper().swapcase().capitalize())
print(' '.join(['Java', 'Python', 'C++', 'R', 'Go']).lower().upper().swapcase().capitalize().title())
5. replace()
该方法用来替换字符串中指定字符或子字符的所有重复出现,每次只能替换一个字符或者子字符串,返回处理后的新字符串,不修改原字符串。
programs = ('Java', 'Python', 'C++', 'R', 'Go')
text = 'Python and Java are both simple programming languages'
for program in programs:
text = text.replace(program, '***')
print(text)
6. maketrans() translate()
maketrans() 用来生成字符映射表,translate() 安映射表中对应关系转换字符串并替换其中的字符,使用着两个方法的组合可以同时处理多个字符,replace() 无法满足这一要求。
table = ''.maketrans('0123456789', '零一二三四五六七八九')
print('2022年1月3日'.translate(table))
7. string() rstring() lstrip()
以上方法分别用来删除当前字符串两段,右端,或左端的空白字符或指定字符。
print(list(' string '.strip()))
print(list(' string '.rstrip()))
print(list(' string '.lstrip()))
print(list(' string '.strip('s'))) # 指定的字符是头才能删除
print(list(' string '.strip(' s')))
print(list(' string '.rstrip(' g')))
8. eval()
尝试把任何字符串转化为Python表达式并求值。
值得注意的是,它可以计算任何合法表达式的值,如果你巧妙地构造输入的字符串,可以执行任何外部程序,有一定风险,建议改用 ast 模块的 literal_eval() 函数。
print(eval('3+5'))
print(eval('3'+'5'))
9. 关键字 in not in
与列表,元组,字典,集合,迭代器,对象一样,也可以使用关键字 in 和 not in 来判断一个字符串是否出现在另一个字符串中。
print('jianghua' in 'my name is jianghua')
10. startswith() endswith()
分别用来判断字符串是否以指定字符串开始或结束,可以接收两个整数参数来限定字符串的检测范围。(区分大小写)
print('JiangHua is a good boy'.startswith('Jiang'))
print('JiangHua is a good boy'.startswith('jiang'))
print('JiangHua is a good boy'.endswith('Boy'))
11. isalnum() isalpha() isdigit() isspace() isupper() islower()
用于判断字符串是否全为数字或英文字母,是否全部为英文字母,是否全部为数字字符,是否全部为空白字符,是否全部为大写英文字母,以及是否全为小写英文字母。
random1 = ''.join(random.choices(string.digits + string.ascii_letters, k=10))
# 随机数字 大小写字母是个
print(random1)
print(random1.isalnum()) # 是否全为数字或字母
print(random1.isalpha()) # 是否全为字母
print(random1.isdigit()) # 是否全为数字
print(random1.isspace()) # 是否全为空白字符
print(random1.isupper()) # 是否全为大写字母
print(random1.islower()) # 是否全为小写字母
12. center() ljust() rjust()
返回指定宽度的新字符串,原字符串居中,左对齐或右对齐出现在新字符串中,如果指定的宽度大于原字符串长度,则使用指定的字符填充。
print('Python'.center(20, '='))
print('Python'.ljust(20, '+'))
print('Python'.rjust(20, '-'))