我想根据字典中的值替换字符串。我想用正则表达式尝试这个。
d = { 't':'ch' , 'r' : 'gh'}
s = ' Text to replace '
m = re.search('#a pattern to just get each character ',s)
m.group() # this should get me 'T' 'e' 'x' 't' .....
# how can I replace each character in string S with its corresponding key: value in my dictionary? I looked at re.sub() but could figure out how it can be used here.
我想生成一个输出 - > Texch cho gheplace
答案 0 :(得分:2)
如果字典的值中没有字符显示为字典中的键,则其相当简单。您可以立即使用str.replace
功能,就像这样
for char in d:
s = s.replace(char, d[char])
print s # Texch cho gheplace
更简单的是,您可以使用以下内容,即使密钥出现在字典中的任何值中,这也会起作用。
s, d = ' Text to replace ', { 't':'ch' , 'r' : 'gh'}
print "".join(d.get(char, char) for char in s) # Texch cho gheplace
答案 1 :(得分:2)
使用re.sub
:
>>> d = { 't':'ch' , 'r' : 'gh'}
>>> s = ' Text to replace '
>>> import re
>>> pattern = '|'.join(map(re.escape, d))
>>> re.sub(pattern, lambda m: d[m.group()], s)
' Texch cho gheplace '
re.sub
的第二个参数可以是一个函数。函数的返回值用作替换字符串。