使用字典替换子字符串的所有实例

2024-10-02 14:17:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道有一种方法可以替换所有匹配某种模式的实例,比如:re.sub(r'x', 'y', string)。你知道吗

但是有没有办法用字典中最后一个字符的值来替换所有实例,比如#a#b?你知道吗

dict = {'a': '1', 'b': 2', ... }

所以abc#bcd#ae变成abc2cd1e等等。你知道吗


Tags: 实例方法restring字典ab模式字符
3条回答

可以替换字符串中找到的所有匹配项:

mydict = {'a':'1', 'b':'2'}
mystr = '#a#b'
for k, v in mydict.items():
    mystr = mystr.replace('#' + k, v)

如果你知道你想要替换的东西,你不需要正则表达式。当你在寻找模式的时候,这些更重要,而不是精确的匹配。字符串.替换应该是这样的。你知道吗

string = "a#acbb#bd"
dictionary = {'a':'1', 'b':'2'}
newstring1 = string.replace('#a', dictionary['a'])
newstring = newstring1.replace('#b', dictionary['b'])
print(newstring)
>>>a1cbb2d

re.sub(任何匹配项的替换)的第二个参数可以是可调用的。如果是这样,则为每个匹配使用一个参数match对象调用它,并将其结果替换为字符串。所以你可以这样做:

d = {'a': 'A', 'b': 'B'}
s = '#a #b and #c'
def replace_it(m):
    return d.get(m.group('key'), m.group(0))
print re.sub('#(?P<key>[a-zA-Z]+)', replace_it, s)

相关问题 更多 >