gpt4 book ai didi

python - 加载和读取 JSON 文件的正确方法包含 Python 中的特殊字符

转载 作者:行者123 更新时间:2023-12-04 00:18:51 26 4
gpt4 key购买 nike

我正在处理一个包含一些未知编码字符串的 JSON 文件,如下例所示:

"L\u00c3\u00aa Nguy\u00e1\u00bb\u0085n Ph\u00c3\u00ba"

我已在 Python 3.7 环境中使用 json.load() 函数加载此文本,并尝试使用我在 Internet 上找到的一些方法对其进行编码/解码,但是我仍然无法按预期获得正确的字符串。 (在这种情况下,它必须是 Lê Nguyễn Phú)。

我的问题是,他们使用的是哪种编码方法以及如何在 Python 中以正确的方式解析此文本?

因为 JSON 文件来 self 没有处理的外部源,所以我无法知道或在对文本进行编码的过程中进行任何更改。

[更新]更多详情:

JSON 文件如下所示:

{
"content":"L\u00c3\u00aa Nguy\u00e1\u00bb\u0085n Ph\u00c3\u00ba"
}

首先,我加载了 JSON 文件:

 with open(json_path, 'r') as f:
data = json.load(f)

但是当我提取内容时,却不是我所期望的:

string = data.get('content', '')
print(string)

'Lê Nguyá»\x85n Phú'

最佳答案

有人拿走了“Lê Nguyễn Phú”,将其编码为 UTF-8,然后拿走了生成的一系列 字节,并通过告诉 JSON 编码器这些字节是字符串。然后 JSON 编码器通过对这些字符进行编码来协同产生垃圾。但它是可逆的垃圾。你可以使用类似

的东西来逆转这个过程
json.loads(in_string).encode("latin_1").decode("utf_8")

从 JSON 中解码字符串,从中提取字节(Latin-1 中的 256 个符号与前​​ 256 个 Unicode 代码点一一对应),然后将这些字节重新解码为 UTF -8.

这种技术的最大问题是,它只有在您确定所有输入都以这种方式出现乱码时才有效...没有完全可靠的方法来查看输入并且 < em>决定是否应该对它应用这个损坏的解码。如果您尝试将其应用于包含高于 U+00FF 的代码点的有效编码字符串,它将崩溃。但是,如果您尝试将其应用于仅包含不超过 U+00FF 的代码点的有效编码字符串,它会将您完美的字符串变成另一种垃圾。

关于python - 加载和读取 JSON 文件的正确方法包含 Python 中的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62240421/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com