我有一个文本文件,它的内容是这样的:
"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 \
所有双引号都替换为空字符串。 你能帮我吗?
谢谢, 亚瑟
对于字符串,您可以使用
.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)
一个一个消除
processed_text = raw_text.replace('"', '')
processed_text = processed_text.replace('\', '')
由于示例中的“原始字符串”、“r”,您没有得到预期的结果。如果您添加“r”,您应该指定没有转义字符的正则表达式。
只需删除示例中的“r”,它就会按预期工作:
processed_text = re.sub('\"', "", raw_text)
参考: https://docs.python.org/3/library/re.html#raw-string-notation
很难想象一个转义的双引号
\"
除了在分隔的双引号字符串中包含这个引号之外还有其他含义。因此,无法想象不使用转义转义\\
来区分字符串中包含的转义与不将后续双引号(如果有)作为结束字符串定界符。
这似乎是一种明确的区分方式-
https://regex101.com/r/FH2Dfp/1
Find ( raw context, wrap in r' ' )
(?<!\\)((?:\\\\)*)\\"
替换
\1
我发现这个作品:
processed_text = re.sub(r'\\"', "", raw_text)