正则表达式替换%变量%

Ble*_*der 6 python regex

我一直把头发弄成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)

任何帮助将不胜感激,因为这个正则表达式的东西让我疯了......

Ken*_*der 8

如果您对字符串中的语法很灵活,那么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)