我按照以下代码准备一个字符串,然后将其写入文本文件:
text = my_dict['key']
# Ensure text is utf-8 formatted
safe_text = text.encode('utf-8', errors='ignore')
# Escape any \ issues
safer_text = str(safe_text).replace('\\', '\\\\').replace('"', '\\"')
# Write to .txt file
text_file = open("Data/output.txt", "w")
text_file.write(safer_text)
我知道 \
是特殊字符的转义,因此我解释为 safe_text
中的 \\
(表示文件路径)将替换为 \\\\
。但是,我不知道为什么代码要将 "
替换为 \\"
(因为我不认为 "
是一个特殊的需要转义的字符)。但即使是,为什么不使用 .replace('"', '\"')
而不是 .replace('"', '\\"')
?。另外,为什么我们不能直接将包含 \\
和 "
的 safe_text
直接写入output.txt
(即跳过safer_text
这一步)?
谢谢。
最佳答案
"
可以被转义,但如果它位于 '
包围的字符串中则不必转义。与 "
相反。因此,Python将取代\"
和\'
与 \"
和\'
分别,无论该模式是在单引号字符串还是双引号字符串中找到的。
这样的字符串就像 '\''
相当于双引号的等效项 "\'"
。如果不是这样,字符串的内容可能会根据它是单引号还是双引号而改变,至少可以说这是不可取的。
关于你的第二个问题,如果不查看文件的格式,我无法确定,因为某些格式需要转义某些字符。当然,它实际上可以是任何格式,因为扩展名是 .txt
。这取决于这段代码的作者希望如何读取数据。
关于python - 反冲\与逃逸之间的混淆以及\的使用\",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57487005/