python对象提供了大量方法用于字符串的检测,替换和排版等操作,另外还有大量的内置函数和运算符也支持对字符串的操作。但要注意的是字符串对象所涉及的字符串修改方法都是返回修改后的新字符串,原字符串不做任何修改
那我们下面就来介绍一些常用的函数
- find() rfind() index() rindex() count()
函数 | 说明 |
---|---|
find() | 查找一个字符串在另一个字符串指定范围(默认为整个字符串)中首次出现的位置,若不存在则返回-1 |
rfind() | 查找一个字符串在另一个字符串指定范围(默认为整个字符串)中最后一次出现的位置,若不存在则返回-1 |
index() | 返回一个字符串在另一个字符串指定范围中首次出现的位置,若不存在抛出异常 |
rindex() | 返回一个字符串在另一个字符串指定范围中最后一次出现的位置,若不存在抛出异常 |
count() | 返回一个字符串在另一个字符串中出现的次数若不存在返回0 |
下面举一些例子说明一下
s = "apple,peach, banana, peach,pear"
s.find("peach") #返回第一次出现的位置
s.find("peach", 7) #从指定位置开始找
s.find("peach",7,20) #从指定范围内查找
s.rfind('p') #从字符串尾部向前查找
s.index('p') #返回首次出现的位置
s.count('p') #统计子字符串出现的次数
s.count('ppp') #不存在时返回0
- split() rsplit()
- split() 或rsplit() 以指定的字符为分隔符,从字符串左端或右端开始将其分隔成多个字符串
- 如果不只当分隔符,则分隔符中的任何空白符号(包含空格,换行符,制表符等)的连续出现都将被认为是分隔符,返回包含最终分隔结果的列表
- 允许指定最大分隔次数(但不是必须的)
- 调用split()方法如果不传递任何参数,将使用任何空白字符作为分隔符,如果字符串存在连续的空白字符,split()将作为一个空白字符对待
s = "apple,peach,banana,pear"
s.split(",") #使用逗号来分隔
#输出为{"apple","peach","banana","pear"}
s = "2014-10-31"
t = s.split("-") #使用指定的字符作为分隔符
list(map(int,t)) #将分隔结果转换为整数
s = '\n\nhello\t\t world\n\n My name is Dong'
s.split(maxsplit=1)#分隔一次
#输出['hello',' world\n\n My name is Dong']
s.split(maxsplit=2)
#输出为['hello', 'world', 'My name is Dong']
s.rsplit(maxsplit=2)
#输出为['\n\nhello\t\t world\n\n My name','is','Dong']
s.split(maxsplit=10) #最大分隔次数可大于实际可分隔次数
#输出为['hello', 'world','My','name','is','Dong']
- partition() rpartition()
partition | 以指定的字符串为分隔符将原字符分隔为3部分,即分隔符之前的字符串,分隔符字符串,分隔符之后的字符串。若指定的分隔符不再原字符串中,则返回原字符串和两个空字符串,如果字符串有多个分隔符,那么partition从左往右将遇到的第一个分隔符作为分隔符,而rpartition把从右往左遇到的第一个分隔符作为分隔符
e.g.
s = "apple,peach,banana,pear"
s.partition(',') #从左侧使用逗号进行划分
#输出为('apple', ',', 'peach,banana,pear')
s.rpartition(',') #从右侧使用逗号进行划分
#输出为('apple,peach,banana', ',', 'pear')
s.rpartition('banana') #使用字符串作为分隔符
#输出为('apple,peach,', 'banana', ',pear')
'abababab''.partition('a')
#输出为('', 'a', 'bababab')
'abababab'.rpartition('a')
#输出为('ababab', 'a', 'b')
- join()
将列表中多个字符串进行连接,并在相邻两个字符串之间插入指定字符,返回新字符串
import string
li = ["apple", "peach","banana","pear"]
sep = ","
print(sep.join(li))
print(':'.join(li))
print(''.join(li))
输出为
apple,peach,banana,pear
apple:peach:banana:pear
applepeachbananapear
***Repl Closed***
- lower(), upper(), capitalize(), title(), swapcase()
s = "What is Your Name?"
s.lower() #返回小写字符串
s.upper() #返回大写字符串
s.capitalize() #字符首字母大写
s.title() #每个单词首字母大写
s.swapcase() #大小写互换
输出为
hat is your name?
WHAT IS YOUR NAME?
What is your name?
What Is Your Name?
wHAT IS yOUR nAME?
- replace(), maketrans(), translate()
replace()用来替换字符串中指定字符或字符串的所有重复出现,每次只能替换一个字符或字符串,把指定的字符串参数作为一个整体对待,l类似于Word,WPS,记事本等文本编辑器的查找替换功能,并不修改原字符串,而是返回一个新字符串
maketrans()用来生成字符串映射表,而translate()用来根据映射表中定义的对应关系转换字符串并替换其中的字符,使用这两种方法的组合可以同时处理多个不同的字符,replace不能满足
s = "中国,中国"
print(s.replace("中国","中华人民共和国"))
print('abcdabc'.replace('abc','ABC'))
#输出为
中华人民共和国,中华人民共和国
ABCdABC
table = ''.maketrans('abcdef123', 'uvwxyz@#$')
s = "Python is a greate programming language. I like it!"
print(s. translate(table))
#输出为
Python is u gryuty progrumming lunguugy. I liky it!
- strip(), rstrip(), lstrip()
分别用来删除两端,右端或左端连续的空白字符或指定字符
s = " abc "
s2 = s.strip()
print(s2)
'\n\nhello world \n\n'.strip()
"aaaasssddf".strip("a") #删除指定字符
"aaaasssddf".rstrip("a") #删除字符串右端指定字符
"aaaasssddf".lstrip("a") #删除字符串左端指定字符
输出为
abc
hello world
sssddf
aaaasssddf
sssddf
- startswith() endswith()
判断字符串是否以指定字符串开始或结束,可以接收两个整数参数来限定字符串的检测范围
s = 'Beautiful is better than ugly.'
s.startswith("Be") #检测整个字符串
s.startswith("Be",5) #指定检测范围的起始位置
s.startswith('Be',0,5) #指定检测范围的起始和结束位置
输出为
True
False
True
- isalnum() isalpha() isdigit() isdecimal() isnumeric() isspace() isupper() islower()
分别用来检测字符串是否为数字或字母,是否为字母,是否为数字字符,是否为空白字符,是否为大写字母,是否为小写字母
输入为
print('1234abcd'.isalnum())
print('1234abcd'.isalpha())
print('1234abcd'.isdigit())
print('abcd'.isalpha())
print('1234.0'.isdigit())
print('九'.isdigit())
print('九'.isnumeric())
print('九'.isdecimal())
print('I III X'.isdecimal())
print('IV III X'.isdigit())
输出为
True
False
False
True
False
False
True
False
False
False
- center() ljust() rjust() zfill()
用于字符串的排版,分别返回指定宽度的新字符串,原字符串居中,左对齐或右对齐出现在新字符串中,如果指定宽度大于字符串长度,则使用指定的字符(默认空格)进行填充,zfill()返回指定宽度的字符串,在左侧以字符0填充
print('Hello world!'.center(20)) #居中对齐,以空格填充
print('Hello world!'.center(20,'=')) #居中对齐,以字符=填充
print('Hello world!'.ljust(20,'-')) #左对齐
print('abc'.zfill(5)) #左侧填充数字字符0
print('abc'.zfill(2)) #指定宽度小于字符串长度时,返回字符串本身
print('uio'.zfill(20))
输出为
Hello world!
====Hello world!====
Hello world!--------
00abc
abc
00000000000000000uio