对字符进行分组并执行替换

时间:2014-02-23 05:13:45

标签: python regex string

我想根据字典中的值替换字符串。我想用正则表达式尝试这个。

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

2 个答案:

答案 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的第二个参数可以是一个函数。函数的返回值用作替换字符串。