在 python 中的文本文件中替换反斜杠后跟双引号

问题描述 投票:0回答:5

我有一个文本文件,它的内容是这样的:

"good to know it \" so nice \" "

我用python读取它的内容,想用空字符串替换" 我使用的代码是:

import re
file_path = "backslash_double_quotation.txt"
with open(file_path, "r") as input_file:
    raw_text = input_file.read()
processed_text = re.sub(r'\"', "", raw_text)
print(raw_text)
print(processed_text)

我希望处理后的文本是这样的:

"good to know it  so nice  "

然而,实际输出是:

good to know it \ so nice \

所有双引号都替换为空字符串。 你能帮我吗?

谢谢, 亚瑟

python regex double-quotes backslash
5个回答
1
投票

对于字符串,您可以使用

.replace()
替换字符串中的特定字符或单词。

例如:

text = "good to know it \" so nice \""
print(text.replace("\"", " "))

这个的输出是:

good to know it   so nice  

使用您的代码:

import re
file_path = "backslash_double_quotation.txt"
with open(file_path, "r") as input_file:
    raw_text = input_file.read()
processed_text = raw_text.replace("\"", "")
print(raw_text)
print(processed_text)

如果你想使用

re
然后:

processed_text = re.sub(r"\\", "", raw_text)

0
投票

一个一个消除

processed_text = raw_text.replace('"', '')
processed_text = processed_text.replace('\', '')

0
投票

由于示例中的“原始字符串”、“r”,您没有得到预期的结果。如果您添加“r”,您应该指定没有转义字符的正则表达式。

只需删除示例中的“r”,它就会按预期工作:

processed_text = re.sub('\"', "", raw_text)

参考: https://docs.python.org/3/library/re.html#raw-string-notation


0
投票

很难想象一个转义的双引号

\"
除了在分隔的双引号字符串中包含这个引号之外还有其他含义。因此,无法想象不使用转义转义
\\
来区分字符串中包含的转义与不将后续双引号(如果有)作为结束字符串定界符。

这似乎是一种明确的区分方式-

https://regex101.com/r/FH2Dfp/1

Find ( raw context, wrap in r' ' )

(?<!\\)((?:\\\\)*)\\"

替换

\1


0
投票

我发现这个作品:

processed_text = re.sub(r'\\"', "", raw_text)
© www.soinside.com 2019 - 2024. All rights reserved.