我必须处理我从facebook下载的JSON文件和我所有的信息。我将管理JSON本身,但是在我开始处理这些文件之前,我有一个问题。我无法确定下载的文件的编解码器。我尝试了Win和Mac,在Jupyter Notebook下使用Python3。代码如下:
f = open("testefc.json", "r", encoding="iso-8859-1")
f.read()
我尝试了utf-8,latin1和其他几种格式,但似乎都不能正确翻译。我的文件包含以下文本:
"Voc\u00c3\u00aa est\u00c3\u00a1 num processo de sele\u00c3\u00a7\u00c3\u00a3o"
我知道这意味着"você está num processo de seleção"
。我可以尝试替换每一段代码,但我认为一定有更容易的方法。不幸的是,使用html下载并不适合我的需求。
感谢任何人的帮助!谢谢!
发布于 2019-10-01 13:35:33
你有没有试着用utf-8编码打开这个文件?您的方法提到了拉丁语-1和utf-8,因此我认为您可能混淆了编码,没有正确解码json文件。试一试
>>> f = open('testefc.json', 'r', encoding='utf-8')
>>> f.read()
'Você está num processo de seleção'
>>> f.close()
请注意,这相当于以二进制模式打开文件(未指定编码),然后手动对其进行解码
>>> f = open('testefc.json', 'rb')
>>> f.read().decode('utf-8')
'Você está num processo de seleção'
>>> f.close()
您似乎错误地将json文件解码为拉丁文-1,但是原始文本编码是utf-8 (与facebook.com页面来源:<meta charset="utf-8" />
相比)。当您再次将示例文本编码为拉丁语-1并将其解码为utf-8时,您将获得正确解码的Python字符串。
>>> l = 'Voc\u00c3\u00aa est\u00c3\u00a1 num processo de sele\u00c3\u00a7\u00c3\u00a3o'.encode('latin1')
>>> s = l.decode('utf-8')
>>> s
'Você está num processo de seleção'
https://stackoverflow.com/questions/58176175
复制相似问题