【发布时间】:2020-07-03 05:29:29
【问题描述】:
我知道之前在 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”
【问题讨论】:
-
这个 JSON 是由外部源生成的,所以当我导入自己的数据时,它可能会崩溃,因为它可能无法按原样使用单引号。
-
任何声称支持 JSON 的工具都必须能够同时处理
"Test \u0027TEXT\u0027 around"和"Test 'TEXT' around"。这两种变体是等价的。如果您想强制执行\u0027表示法,您必须使用您自己的实现编写并注册一个JSONEncoder子类来序列化JSON 字符串。或者在json.dumps的结果上使用str.replace(),但是这样很丑。 -
是的,替换方法很丑陋,但可以满足我的需求(在这种情况下非常具体)。即使使用原始字符串,我仍然无法使其正常工作。
标签: python json python-3.x unicode ascii