gpt4 book ai didi

python - 为什么我的正则表达式用函数对象而不是替换值替换匹配模式?

转载 作者:太空宇宙 更新时间:2023-11-03 17:36:56 24 4
gpt4 key购买 nike

我需要一个从字典中获取替换模式的正则表达式。我编写了以下代码,但模式被函数对象而不是替换值替换。

>>> 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com