为了这个,我已经用了 30 分钟把一撮头发拉出来......
我有一本字典,像这样:
{'search': 'replace',
'foo': 'bar'}
还有这样的字符串:
Foo bar %foo% % search %.
我想用字典中的等效文本替换每个变量:
Foo bar bar replace.
我当前的正则表达式失败了,所以这里是(key
和 value
来自 dictionary.items()
):
re.sub(r'%\d+' + key + '[^%]\d+%', value, text)
任何帮助将不胜感激,因为这个正则表达式的东西让我发疯......
最佳答案
如果您对字符串中的语法很灵活,Python 有一个内置的机制:
>>> print 'Hello, %(your_name)s, my name is %(my_name)s' % {'your_name': 'Blender', 'my_name': 'Ken'}
Hello, Blender, my name is Ken
或者,如果您想要那种语法,我会避免使用正则表达式,只需这样做:
>>> vars = {'search': 'replace',
... 'foo': 'bar'}
>>> mystring = "Foo bar %foo% % search %."
>>> for k, v in vars.items():
... mystring = mystring.replace('%%%s%%' % k, v)
...
>>> print mystring
Foo bar bar % search %.
关于python - 替换 %variables% 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6206804/