python - 反冲\与逃逸之间的混淆以及\的使用\"

标签 python string text

我按照以下代码准备一个字符串,然后将其写入文本文件:

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/

相关文章:

python - python中的多维数组到数据库

python - 无法在本地运行 python -m unittest。 SPARK_HOME 变量设置不正确

python - 确定对象是否为 ctypes 数组

python - 如何在不使用 csv 模块的情况下提取 csv 文件的内容并将其放入 dict 文件类型中。 [Python]

Java 字符串数组插入排序

text - 验证带有BR标签的文本和文本并非总是以相同的顺序

python - 使用 pandas.read_csv 分隔列

c++ - C++ 字符串中 "size"和 "capacity"之间的区别?

jquery - 使用 jQuery 将 HTML 文本输入更改为密码输入

text - 批量添加 header 到 ASCII 文本文件,可变长度