我需要一个从regex
取替换模式的dictionary
。我编写了以下代码,但是该模式被替换为function object
而不是替换值。
>>> import re
>>> d1 = {'a':'1'}
>>> d2 = {'w':'2','k':'2'}
>>> re.sub(r'(a)([wk])', '%s%s' %(lambda m:d1[m.group()[0]], lambda m:d2[m.group()[1]]), 'waka')
'w<function <lambda> at 0x7f1e281efc08><function <lambda> at 0x7f1e281efcf8>a'
预期输出为
'w12a'
。 最佳答案
因为:
>>> import re
>>> '%s%s' %(lambda m:d1[m.group()[0]], lambda m:d2[m.group()[1]])
'<function <lambda> at 0x0000000002AB0128><function <lambda> at 0x0000000002AB0198>'
您正在传递上述字符串作为替换字符串。
使用替换功能如下:
>>> import re
>>> d1 = {'a':'1'}
>>> d2 = {'w':'2','k':'2'}
>>> re.sub(r'(a)([wk])',
... lambda m: d1[m.group(1)] + d2[m.group(2)],
... 'waka')
'w12a'
关于python - 为什么我的正则表达式用功能对象而不是替换值替换匹配模式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31084400/