Python的re模块错误地反斜杠

 手机用户2502902913 发布于 2023-02-06 13:10

我正在使用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}.'

有人知道如何在最后的括号内得到一个反斜杠或者这是一个错误吗?

提前致谢

帕科

1 个回答
  • 更换工作正常.解释器打印字符串的表示而不是字符串本身,因此反斜杠被转义.

    如果您print(pc_em.sub( r'{\em \g<1>}', emph))将看到它是正确的.

    2023-02-06 13:11 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有