首页 > 解决方案 > Python3 用 unicode 单引号保存 JSON

问题描述

我知道之前在 Stackoverflow 和其他网站上已经问过这个问题,但我似乎无法使用转义的 Unicode 字符(Python3)保存 JSON 文件。我已经阅读了很多教程。

我错过了什么?我尝试了很多东西,但没有任何效果。我也尝试过在 UTF-8 中编码/解码,但我显然遗漏了一些东西。

为了清楚起见,我已经设法让它适用于其他字符,如 © (0439),但我在编码单引号时遇到了麻烦。

如果我有以下听写:

import json
data = {"key": "Test \u0027TEXT\u0027 around"}

我想将它完全保存在一个新的 JSON 文件中,但无论我做什么,它总是以单个字符结束,这是用 Unicode 编码的。

以下 2 个块打印完全相同的内容:{"key": "Test 'TEXT' around"}。

print(json.dumps(data))
print(json.dumps(data, ensure_ascii=False))

有什么方法可以保留 Unicode 字符串文字吗?我想把那个字符串作为一个值:“Test \u0027TEXT\u0027 around”

标签: pythonjsonpython-3.xunicodeascii

解决方案


您描述的行为与 JSON 无关。这就是 Python 3 处理字符串的简单方式。打开外壳并写入:

>>> "Test \u0027TEXT\u0027 around"
"Test 'TEXT' around"

如果您不希望 Python 解释特殊字符,则应使用原始字符串(甚至可能是字节序列):

>>> r"Test \u0027TEXT\u0027 around"
'Test \\u0027TEXT\\u0027 around'

参考:


推荐阅读