文章目录
简介
Python 的字符串同 Python 的列表一样,也是序列的一种,可以进行迭代,也可以通过索引访问字符元素,并且 Python 字符串提供了很多非常高效的办法帮助我们进行字符串处理。
Python 字符串常用方法
1. 字符拼接
1.1 join
以 'string'
作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串:
>>> dict_ = ['a', 'b', 'c', 'd', 'e']
>>> '|'.join(dict_)
'a|b|c|d|e'
2. 字符分割:split & partition
2.1 Split
2.1.1 string.split(string="", num=string.count(str))
以 str 为分隔符切片 string,如果 num 有指定值,则仅分隔 num+ 个子字符串
>>> str_ = 'a | b | c | d | e'
>>> str_.split(' | ')
['a', 'b', 'c', 'd', 'e']
>>> str_.split(' | ', 1)
['a', 'b | c | d | e']
rsplit
同理,方向相反
2.1.2 string.splitlines([keepends])
按照行(’\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符:
>>> lines = 'x\r\ny\rz'
>>> lines.splitlines()
['x', 'y', 'z']
# 如果直接考虑 '\n',则容易因操作系统换行符不同出错
>>> lines.splitlines('\n')
['x\r', 'y\rz']
2.2 partition
2.2.1 string.partition()
以输入的目标字符串为界分为三个部分:[pre_in_string, input, post_in_string]
,例如:
>>> input = "aaa bbb ccc"
>>> input.partition('bbb')
['aaa ', 'bbb', ' ccc']
# uptime
>>> uptime_output = '18:42:51 up 1:00, 1 user, load average: 0.08, 0.04, 0.05'
>>> uptime_output.partition('load average: ')
['18:42:51 up 1:00, 1 user, ', 'load average: ', '0.08, 0.04, 0.05']
3. 字符串格式化
3.1 使用 %s
再字符串中使用变量%s
,赋值渲染:
>>> template = '%s nginx 200 %s 500 %s'
>>> template%(2020801, 1000, 200)
'2020801 nginx 200 1000 500 200'
3.2 format
按照 format_map
中参数列表匹配,成功匹配数量必须大于等于模板中的键的数量:
# 不指定键,按顺序填充
>>> "{}|{}".format("hello", "world")
'hello|world'
# 指定顺序
>>> "{2}|{1}".format("world", "hello")
'hello|world'
# 指定字典
>>> template = '{name} is eating {fruit}'
>>> template.format_map({'name': 'somebody', 'fruit':'apple'})
'somebody is eating apple'
# 通过列表
>>> template = '{0[0]} is eating {0[0]}'
>>> name_list = ['somebody', 'apple']
>>> template.format_map(name_list)
'somebody is eating apple'
4. 查找
4.1 find and rfind
>>> string = 'apple'
>>> string.find('p')
1
>>> string.rfind('p')
2
>>> string.find('z')
-1
4.2 index and rindex
>>> string = 'apple'
>>> string.index('p')
1
>>> string.rindex('p')
2
# 区别 find and rfind
>>> string.rindex('o')
ValueError: substring not found