我试图找到符号"在一个大文本中,它只是紧跟在一个单词或字符之后。然后我想用这个符号替换它而不改变它之前和之后的单词/数字:'
我试过了:
text7 = re.sub(r'(\w)"(\w)', r"$1\'$2", text6)
对于"它" s"我现在得到的只是1美元和2美元。我想要的是"它"" 有什么建议吗?
答案 0 :(得分:1)
使用lookbehind和lookahead;这些只是看起来没有被替换文本修改:
text7 = re.sub(r'(?<=\w)"(?=\w)', "'", text6)
答案 1 :(得分:0)
您可以使用\b"\b
替换为'
。 \b
是一个字边界,可以匹配以下匹配的任何位置(不消耗字符):^\w|\w$|\W\w|\w\W
。
import re
print(re.sub(r'\b"\b', "'", 'it"s'))
P.S。在python中\1
或\g<1>
用于引用捕获组,而不是$1
,因为它将按字面解释。有关详细信息,请参阅python的re.sub()
文档。
答案 2 :(得分: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
。此外,您在替换字符串中的单引号前面还有一个\
。