我在导入json文件(从USPTO网站下载)时遇到问题-这是数据的外观:
我尝试使用的代码是:
import json
with open('2020.json') as json_file:
data = json.load(json_file)
我收到错误消息“ Expecting':'delimiter:line 1 column 20 with the image。
我尝试将该位置的','更改为':',并且数据似乎可以作为字典很好地加载到“ data”变量中。但是,当我运行print(len(data))时,它返回“ 1”。
条目数显然不是'1'。我希望最终能够将数据转换为数据框以进行进一步的数据处理。有关如何解决此问题的任何建议?
谢谢!
答案 0 :(得分:0)
我认为该文件可能包含一些奇怪的字符,只能以二进制格式读取。这在Windows上的Python 3.7中对我有用:
>>> import json
>>> with open('2020.json', 'rb') as f:
... data = json.loads(f.read())
...
>>> type(data)
<class 'dict'>
>>> len(data.keys())
1
>>> list(data.keys())
['PatentBulkData']
>>>
如果不使用'rb'作为格式,我会感到奇怪(尽管与您看到的不一样:
>>> f = open('2020.json', 'r')
>>> json.load(f)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python37\lib\json\__init__.py", line 293, in load
return loads(fp.read(),
File "C:\Python37\lib\encodings\cp1252.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x8d in position 11411895: character maps to <undefined>
此外,将来包含json文件的位置(如果可以公开下载)可能会很有用。 (我相信)我是从这里https://ped.uspto.gov/peds/找到的。