34.Python字符串替换方法translate
Python字符串替换方法有replace、translate。 replace很简单,直接字符串中的某个子串替换为另一个字符串。
>>> r"刘备是一个人的名字".replace("刘备","张飞")
'张飞是一个人的名字'
方法replace有两个参数,它将参数1替换为参数2。
>>> str_dict={"*":"\w+"}
>>> str=r"**,hello"
>>> for key in str_dict:
str=str.replace(key,str_dict[key])
'\\w+\\w+,hello'
如上示例代码,将要替换的字符对放入字典中,通过for循环依次将要替换的字符对进行替换。 下面的例子展示了如果有多对要替换的字符串时,通过一句代码replace是无法同时进行多组替换的,要想进行多组替换,必须借助for循环的循环结构才能实现。这段代码体现了for循环的作用,同时,也体现replace方法和translate方法不同之处。
>>> str_dict={"*":"\w+","l":"L"}
>>> str=str.replace(key,str_dict[key])
'\\w+\\w+,hello'
>>> for key in str_dict:
str=str.replace(key,str_dict[key])
'\\w+\\w+,heLLo'
下面我们来介绍一下方法translate。translate方法也是用于替换字符串特定部分的字符串方法,他可以同时替换多个字符,效率比replace高。方法translate使用前需要先创建一个转换表(其实是一个类似上面代码中str_dict的字典),转换表里记录了不同Unicode之间的对应转换关系。
>>> t= r"刘备是一个人的名字,刘备是一个英雄"
>>> map=str.maketrans("刘备","张飞")
{21016: 24352, 22791: 39134}
>>> t.translate(map)
'张飞是一个人的名字,张飞是一个英雄'
注意方法translate进行的是单个Unicode码转换,也就是刘(Unicode码为21016)替换为张(Unicode码为24352),备替换为飞。
>>> t= r"刘备是一个人的名字,刘备是一个英雄,刘禅是刘备的儿子"
>>> t.translate(map)