当前位置: 首页 > 面试题库 >

Python使用UTF-8 BOM头加载json文件

吴鸿禧
2023-03-14
问题内容

我需要解析其他工具生成的文件,该工具无条件输出带有UTF-8 BOM头(EFBBBF)的json文件。我很快发现这就是问题所在,因为Python
2.7模块似乎无法解析它:

>>> import json
>>> data = json.load(open('sample.json'))

ValueError: No JSON object could be decoded

删除BOM可以解决问题,但是我想知道是否还有另一种使用BOM头解析json文件的方法?


问题答案:

您可以打开codecs

import json
import codecs

json.load(codecs.open('sample.json', 'r', 'utf-8-sig'))

utf-8-sig自己解码并传递给loads

json.loads(open('sample.json').read().decode('utf-8-sig'))


 类似资料:
  • 问题内容: 我有一个从WHO网站下载的CSV文件(http://apps.who.int/gho/data/view.main.52160,下载,“ CSV格式的多用途表”)。我尝试将文件加载到numpy数组中。这是我的代码: 我得到 UnicodeDecodeError:’ascii’编解码器无法解码位置2的字节0xc3:序数不在range(128)中。 我猜想numpy在读取字符串“Côted

  • 我正在尝试将一些UTF-8字符输出到JSON文件。 当我保存文件时,它们是像这样编写的: {“some_key”: “Enviar invitaci\u00f3n privada”} 上述操作是有效的。当我加载文件并打印“some_key”时,它会在终端中显示“Enviar invitación Private ada”。 是否无论如何都要编写带有“some_key”作为编码版本的JSON文件,如

  • 问题内容: 我想保留一个JSON文档来存储一些简单的数据,并且我需要此文档并在调用中使用JSON对象,以便可以使用它。这不是电话。我的意思是应该用于开发,但我确实希望在构建时编译文件,这与API 的实际调用不同,API的内容是动态的。 问题答案: 最简单的方法是为此使用requirejs json插件,这将使您也可以将文件包括在构建中。 https://github.com/millermedei

  • 问题内容: 我正在尝试在Python中加载和解析JSON文件。但是我在尝试加载文件时遇到了困难: 产量: 我看着 18.2。— Python文档中的 JSON编码器和解码器 ,但是通读这个看起来糟透了的文档非常令人沮丧。 前几行(用随机条目匿名): 问题答案: 您有一个JSON Lines格式的文本文件。您需要逐行解析文件: 每 行都 包含有效的JSON,但总的来说,它不是有效的JSON值,因为没

  • 我正试图使用pandas library的read\u json()和python的内置json库从python中的此链接加载数据集,该数据集存储在我的计算机中(与我的笔记本相同的文件夹)。以下是我的代码: 另一个是: 在第一种情况下,我得到以下错误: 在第二种情况下,我得到: 我正在Ubuntu 18.04中使用jupyter笔记本

  • 问题内容: 我在使模块“ json”和“ urllib.request”在简单的Python脚本测试中协同工作时遇到问题。使用Python 3.5,代码如下: 通过命令行运行脚本时,出现的错误是“ TypeError:JSON对象必须为str,而不是’bytes’ ”。我是Python的新手,因此很可能是一个非常简单的解决方案。感谢这里的任何帮助。 问题答案: 除了忘记解码之外,您只能读取 一次