在日常编程开发中,永远离不开对字符串的操作。或者说,大部分时候都是在处理各种不同来源和格式的字符串数据。本文总结了 Python3 操作字符串的各种基础方法和函数,了解并掌握这些方法对提高 Python 编程效率大有裨益。
定义字符串
使用引号可以定义一个字符串:
'我是 Python 字符串'
使用双引号效果类似:
"我是 Python 字符串"
当字符串的内容中需要包含引号时,有两种解决方式。一是混用单引号和双引号:
"我要在字符串中使用 ' 号"
'他告诉我:"Python 一点都不难"'
第二种方法是在使用同样引号的前提下,使用反斜杠符号转义要包含在字符串中的引号:
'我要在字符串中使用 \' 号'
上面定义的都是单行字符串,如果要定义多行格式的字符串,可以使用 \n
换行符号:
'第一行内容\n第二行内容'
\n
符号会造成换行,这意味着在碰到 'C:\data\name'
这种需要正常单行显示的字符串时会出现意料之外的结果。这时可以通过多加一个反斜杠来解决:
'文件路径在 C:\data\\name'
更简单的方法是使用 r
前缀符号:
r'文件路径在 C:\data\name'
定义多行格式字符串的另外一种方法是使用三重引号:
'''
第一行内容
第二行内容
'''
使用 +
符号可以拼接两个不同来源的字符串:
'abc' + 'def'
如果是像上面这样的字面值而非变量,可以省略 +
符号:
'abc' 'def'
相邻的两个字面值字符串会自动进行合并。
字符串索引和切片操作
Python 字符串变量支持索引操作。比如有这样一个字符串变量:
words = 'Python'
要取出字符串变量中的第一个字符:
>>> words[0]
'P'
取出最后一个字符:
>>> words[5]
'n'
倒序方法取出最后一个字符:
>>> words[-1]
'n'
索引操作用来取出单个字符,使用切片操作可以取出多个字符:
>>> words[0:2]
'Py'
切片的第一个参数默认是 0,所以上面的切片操作也可以使用下面的简写方式:
>>> words[:2]
'Py'
第二个参数默认值为字符串长度,所以到最后一个字符的切片操作也可以使用简写方式:
>>> words[2:]
'thon'
Python 字符串不支持修改,所以无法通过 words[0] = 'p'
的方式来变更其中任意字符。要进行类似操作只能采用组合并新建字符串的方式来处理:
>>> 'p' + words[1:]
'python'
字符串格式化
字符串的格式化操作比较实用,它通过把一些变量值代入预定义的字符串模板,用来实现一些需要按规定格式生成字符串数据的功能。比如生成 SQL,或是消息模板等场景。最原始的字符串格式化方式如下:
>>> 'Python %s' % '很有趣'
'Python 很有趣'
更对象化的写法则如下:
>>> 'Python {}'.format('很有趣')
'Python 很有趣'
上面两种方式用起来方便,但在碰到多个值的时候使用时就有问题了。因为前面字符串中的占位符号不论数量还是顺序,都是必须要和后面提供的变量一一对应。在这种情况下,使用命名占位符的方式来定义就非常灵活和方便:
>>> '{name} {message}'.format(name='Python', message='很有趣')
'Python 很有趣'
自 Python 3.6 之后,又新增了一种新的字符串格式化方法:
>>> name = 'Python'
>>> message = '很有趣'
>>> f'{name} {message}'
'Python 很有趣'
这种方式使用起来更加灵活。
字符串函数
字符串创建自 str
对象,这点可以通过 type
方法来确认:
>>> type('Python')
<class 'str'>
所以字符串默认就自带了一些函数可以使用。比如让首字母大写:
>>> 'python'.capitalize()
'Python'
让全部字母大写:
>>> 'python'.upper()
'PYTHON'
或是全部小写:
>>> 'PyThOn'.lower()
'python'
反转字符串中的大小写:
>>> 'Python'.swapcase()
'pYTHON'
设置字数,让字符串在中间,多于的长度用指定的字符补全:
>>> 'Python'.center(20, '-')
'-------Python-------'
让字符串靠左边:
>>> 'Python'.ljust(20, '-')
'Python--------------'
靠右边:
>>> 'Python'.rjust(20, '-')
'--------------Python'
获取字符串的字节对象:
>>> 'Python 还不错'.encode()
b'Python \xe8\xbf\x98\xe4\xb8\x8d\xe9\x94\x99'
判断字符串结尾是否为指定字符:
>>> 'Python'.endswith('a')
False
>>> 'Python'.endswith('n')
True
查找指定字符串是否存在:
>>> 'Python'.find('th')
2
把字符串作为分隔符:
>>> '|'.join('Python')
'P|y|t|h|o|n'
拆分字符串为数组:
>>> 'P y t h o n'.split()
['P', 'y', 't', 'h', 'o', 'n']
移除文本前后的空白符:
>>> ' Python '.strip()
'Python'
以上只是列举了 Python str 字符串对象中一部分内置函数,更多的函数介绍建议参阅 Python 的官方文档: