Python 为什么我的正则表达式用函数对象而不是替换值替换匹配模式?
我需要一个Python 为什么我的正则表达式用函数对象而不是替换值替换匹配模式?,python,regex,python-2.7,Python,Regex,Python 2.7,我需要一个regex,它从字典中获取替换模式。我编写了以下代码,但是模式被函数对象替换,而不是替换值 >>> 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<
regex
,它从字典中获取替换模式。我编写了以下代码,但是模式被函数对象
替换,而不是替换值
>>> 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'
>>重新导入
>>>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”)
“哇”
预期输出为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>'
没有lambda
@BHATIRSHAD,是否有任何方法可以获得上述正则表达式?据我所知,除非将a
简单地翻译为1
,w
到2,k
到2,否则是不可能的。对于这种简单的情况,不需要使用正则表达式。使用
>>> 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'