python中的regex sub - 用于标识3个字符的字符分组,仅更改其中一个字符

问题描述 投票:1回答:3

我试图找到符号“在一个大文本中,当它紧接着前面和后面只有一个单词或字符。然后我想用这个符号替换它而不改变它之前和之后的单词/数字:”

我试过这个:

text7 = re.sub(r'(\w)"(\w)', r"$1\'$2", text6)

对于“它”这个词,“我现在得到的只是1美元2美元。我想要的是”这是“任何建议?

python regex
3个回答
1
投票

使用lookbehind和lookahead;这些只是看起来没有被替换文本修改:

text7 = re.sub(r'(?<=\w)"(?=\w)', "'", text6)

0
投票

有关re模块的帮助,我建议在解释器中运行help(re)(或从命令行运行pydoc re)。它的布局非常方便,我发现它比在线文档更容易理解。

解:

>>> import re
>>> text6 = 'it"s'
>>> print(re.sub(r'(\w)"(\w)', r"\1'\2", text6))
it's

您使用$1来匹配组1,但在Python中它是\1。此外,您在替换字符串中的单引号前面还有一个额外的\


0
投票

你可以使用\b"\b替换'\b是一个单词边界,匹配以下匹配的任何地方(不消耗字符):^\w|\w$|\W\w|\w\W

See code in use here

import re
print(re.sub(r'\b"\b', "'", 'it"s'))

附:在python中,\1\g<1>用于引用捕获组,而不是$1,因为它将在字面上进行解释。有关更多信息,请参阅python的re.sub()文档。

© www.soinside.com 2019 - 2024. All rights reserved.