如何使用字典对字符串进行多重替换?
假设我们有:
d = {
'Спорт':'Досуг',
'russianA':'englishA'
}
s = 'Спорт russianA'
我该如何把字符串 s
中出现的 d
的每一个键,替换成对应的值呢?在这个例子中,结果会是 'Досуг englishA'
。
9 个回答
21
解决方案可以在这里找到 (我喜欢它的简单性):
def multipleReplace(text, wordDict):
for key in wordDict:
text = text.replace(key, wordDict[key])
return text
28
你可以使用 reduce 这个函数:
reduce(lambda x, y: x.replace(y, dict[y]), dict, s)
114
使用正则表达式(re):
import re
s = 'Спорт not russianA'
d = {
'Спорт':'Досуг',
'russianA':'englishA'
}
keys = (re.escape(k) for k in d.keys())
pattern = re.compile(r'\b(' + '|'.join(keys) + r')\b')
result = pattern.sub(lambda x: d[x.group()], s)
# Output: 'Досуг not englishA'
这个方法只会匹配完整的单词。如果你不需要这样,可以使用下面的模式:
pattern = re.compile('|'.join(re.escape(k) for k in d.keys()))
注意,如果你的字典里有些词是其他词的一部分,那么在这种情况下,你应该按长度从长到短排序这些词。