我一直把头发弄成30分钟做这个......
我有一本字典,如下:
{'search': 'replace',
'foo': 'bar'}
Run Code Online (Sandbox Code Playgroud)
和这样的字符串:
Foo bar %foo% % search %.
Run Code Online (Sandbox Code Playgroud)
我想用字典中的等效文本替换每个变量:
Foo bar bar replace.
Run Code Online (Sandbox Code Playgroud)
我当前的正则表达式失败了,所以这里是(key并且value来自dictionary.items()):
re.sub(r'%\d+' + key + '[^%]\d+%', value, text)
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,因为这个正则表达式的东西让我疯了......
如果您对字符串中的语法很灵活,那么Python有一个内置的机制:
>>> print 'Hello, %(your_name)s, my name is %(my_name)s' % {'your_name': 'Blender', 'my_name': 'Ken'}
Hello, Blender, my name is Ken
Run Code Online (Sandbox Code Playgroud)
或者,如果你想要这种语法,我会避免使用正则表达式,只需这样做:
>>> 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 %.
Run Code Online (Sandbox Code Playgroud)