Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我的正则表达式用函数对象而不是替换值替换匹配模式?_Python_Regex_Python 2.7 - Fatal编程技术网

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'