我正在使用Python的3.3 re模块.我想要更改一个文档,在该文档中,为了强调单词,将它放在星号之间,而另一个单词则用相同强调的标记为"{\ em ...}"(排版ConTeXt系统).
比如句子
Shakespeare wrote *Hamlet*.
应该转化为
Shakespeare wrote {\em Hamlet}.
以下正则表达式可以完美地定位和提取所需的信息:
>>> import re >>> pc_em = re.compile(r'\*(.+?)\*') >>> emph = 'Shakespeare wrote *Hamlet*.' >>> m = pc_em.search( emph ) >>> m.group(1) 'Hamlet'
但我一直无法找到任何方式来进行最后的替换:
>>> pc_em.sub( r'{\em \g<1>}', emph ) 'Shakespeare wrote {\\em Hamlet}.' >>> pc_em.sub( r'{\\em \g<1>}', emph ) 'Shakespeare wrote {\\em Hamlet}.' >>> pc_em.sub( '{\\em \g<1>}', emph ) 'Shakespeare wrote {\\em Hamlet}.'
有人知道如何在最后的括号内得到一个反斜杠或者这是一个错误吗?
提前致谢
帕科
更换工作正常.解释器打印字符串的表示而不是字符串本身,因此反斜杠被转义.
如果您print(pc_em.sub( r'{\em \g<1>}', emph))
将看到它是正确的.