字符串的常用操作
字符串的查询操作的方法
功能 方法名称 作用 查询方法 index() 查找子串substr第一次出现的位置,如果查找的子串不存在时,则抛出ValueError rindex() 查找子串substr最后一次出现的位置,如果查找的字串不存在时,则抛出ValueError find() 查找子串substr第一次出现的位置,如果查找的子串不存在时,则返回-1 rfind() 查找子串substr最后一次出现的位置,如果查找的子串不存在时,则返回-1
# 字符串的查询操作
a = 'hello,hello'
print(a.index('lo'))
print(a.find('lo'))
print(a.rindex('lo'))
print(a.rfind('lo'))
3
3
9
9
-11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 逆向索引
h e l l o , h e l l o
0 1 2 3 4 5 6 7 8 9 10 正向索引
查询'lo'的位置时显示的位置输出时显示的是正向索引
查询'lo'第一次出现的位置索引为3;最后一次出现的位置索引为9。
由于index()和rindex()查询的位置不存在时会抛出ValueError,而find()和rfind()则会显示是-1;因此推荐使用find()和rfind()查询操作
字符串大小写转换操作的方法
功能 方法名称 作用 大小写转换 upper() 把字符串中所有字符都转成大写字母 lower() 把字符串中所有字符都转成小写字母 swapcase() 把字符串所有大写字母转换成小写字母,把所有小写字母都转换成大写字母 capitalize 把第一个字符转换为大写,把其余字符转换为小写 title 把每个单词的第一个字符转换为大写,把每个单词的剩余字符转换为小写
s = 'hello,python' # 由于字符串的不可变类型,转成大写之后会产生一个新的字符串对象
a = s.upper()
print(s, id(s))
print(a, id(a))
print(s.lower(), id(s.lower())) # 转换成小写后也会产生新的字符串对象
b = s.lower()
print(s == b)
print(s is b) # 值相同,id不同
s2 = 'hello,Python'
print(s2.swapcase(), s2.capitalize(), s2.title())
hello,python 1900513952752
HELLO,PYTHON 1900518096112
hello,python 1900518143664
True
False
HELLO,pYTHON Hello,python Hello,Python
字符串内容对齐操作的方法
功能 方法名称 作用 字符串对齐 center() 居中对齐,第一个参数指定宽度,第二个参数指定填充符,第二个参数是可选的,默认是空格,如果设置宽度小于实际宽度则返回原字符串 ljust() 左对齐,第一个参数指定宽度,第二个参数指定填充符,第二个参数是可选的,默认是空格,如果设置宽度小于实际宽度则返回原字符串 rjust() 右对齐,第一个参数指定宽度,第二个参数指定填充符,第二个参数是可选的,默认是空格,如果设置宽度小于实际宽度则返回原字符串 zfill() 右对齐,左边用0填充,该方法只接收一个参数,用于指定字符串的宽度,如果指定的宽度小于等于字符串的长度,返回字符串本身
s = 'hello,python'
# 居中对齐
print(s.center(20, '*'))
****hello,python****
# 左对齐
print(s.ljust(20, '*')) # '*'表示填充符,如果不写填充符,则默认空格键
print(s.ljust(10)) # 设置宽度小于实际宽度则返回原字符串
hello,python********
hello,python
# 右对齐
print(s.rjust(20, '*'))
print(s.rjust(20))
print(s.rjust(10)) # 设置宽度小于实际宽度则返回原字符串
********hello,python
hello,python
hello,python
# 右对齐,使用0进行填充
print(s.zfill(20))
print(s.zfill(10))
print('-8910'.zfill(8)) # 符号也表示一个位置,0填充再符号之后
00000000hello,python
hello,python
-0008910
字符串劈分操作的方法
功能 方法名称 作用 字符串的劈分 split() 从字符串的左边开始劈分,默认的劈分字符是空格字符串,返回的值都是一个列表 以通过参数sep指定劈分字符串的劈分符 通过参数maxsplit指定劈分字符串的最大劈分次数,在经过最大次劈分之后,剩余的子串会单独成为一部分 rsplit() 从字符串的右边开始劈分,默认的劈分字符是空格字符串,返回的值都是一个列表 以通过参数sep指定劈分字符串的劈分符 通过参数maxsolit指定劈分字符串的最大劈分次数,在经过最大次劈分之后,剩余的子串会单独成为一部分
# split() 左边开始劈分
a = 'hello world python'
lst = a.split()
print(lst)
['hello', 'world', 'python']
a1 = 'hello|world|python'
print(a1.split())
print(a1.split(sep='|'))
print(a1.split(sep='|', maxsplit=1))
['hello|world|python']
['hello', 'world', 'python']
['hello', 'world|python']
# rsplit() 右边开始劈分
print(a.rsplit())
print(a1.rsplit(sep='|'))
print(a1.rsplit(sep='|', maxsplit=1))
['hello', 'world', 'python']
['hello', 'world', 'python']
['hello|world', 'python']
判断字符串操作的方法
功能 方法名称 作用 判断字符串的方法 isidentifier() 判断指定字符串是不是合法的标识符 isspace() 判断指定的字符串是否全部由空白字符组成(回车、换行、水平制表符) isalpha() 判断指定的字符串是否全部由字母组成 isdecimal() 判断指定字符串是否全部由十进制的数字组成 isnumeric() 判断指定的字符串是否全部由数字组成 isalnum() 判断指定字符串是否全部由字母和数字组成
# isidentifier()
a = 'hello python'
print(a.isidentifier()) # 不是合法标识符,合法标识符为字母、数字和下划线组成。
print('hello'.isidentifier())
print('张三_'.isidentifier())
print('张三_123'.isidentifier())
# 注意:汉字、日语假名、韩文都可以做标识符
False
True
True
True
# isspace()
print('\t'.isspace())
True
# isalpha()
print('abc'.isalpha())
print('张三'.isalpha())
print('张三1'.isalpha())
True
True
False
# isdecimal()
print('123'.isdecimal())
print('123四'.isdecimal()) # false
print('123'.isdecimal())
True
False
True
# isnumeric()
print('123'.isnumeric())
print('123四'.isnumeric()) # true,罗马数字也是数字
True
True
# isalnum()
print('abc12'.isalnum())
print('张三12'.isalnum()) # true
print('abc!'.isalnum())
True
True
False
字符串操作的替换与合并
功能 方法名称 作用 字符串替换 replace() 第一个参数是指定被替换的子串,第二个参数是指定替换子串的字符串,该方法返回替换后得到的字符串,替换前的字符串不发生改变,调用该方法时可以通过第3个参数指定最大替换次数 字符串的合并 join() 将列表或元组中的字符串合并成一个字符串
# replace()
s = 'hello, python'
print(s.replace('python', 'java'))
s = 'hello, python,python,python'
print(s.replace('python', 'java', 2))
hello, java
hello, java,java,python
# join()
lst = ['python', 'java', 'hello']
print('|'.join(lst))
print(' '.join(lst))
print('*'.join('python'))
python|java|hello
python java hello
p*y*t*h*o*n