【发布时间】:2026-01-07 10:15:02
【问题描述】:
我有一个 ASCII 编码的 JSON 文件,其中包含 unicode-escapes(例如,\\u201cquotes\\u201d)和在字符串中转义的换行符(例如,`"foo\\r\\nbar")。在 Python 中是否有一种简单的方法可以通过取消转义 unicode-escapes 来生成 utf-8 编码文件,但保持换行符不变?
在字符串上调用 decode('unicode-escape') 将解码 unicode 转义(这是我想要的),但它也会解码回车和换行符(我不想要)。
【问题讨论】:
-
“解码换行符”是什么意思?它们存储为字节
0x0A和0x0D。\r和\n只是这些字节值的特殊字符串表示形式。 -
@TimPietzcker:可能数据包含一些原始反斜杠 +
n字符。从理论上讲是这样。不太可能,但如果是这样,那么.decode('unicode-escape')确实会尝试解释这些。 -
@TimPietzcker:啊,JSON format 允许
\n和\r和\t等,就像 Python 一样。事实上,格式不允许使用\x0a或\x0d字节,您应该使用\n或\r组合对它们进行编码。 -
@MartijnPieters:但它是
"\\r\\n",而不是"\r\n"字符串。 -
@TimPietzcker:完全正确,但请注意,在 JSON 中,Unicode 转义因此在 Python 中也表示为
'\\u201c',并且 OP 也没有将这些斜杠加倍。