[英]Can't Read File in Python using Json.load
我正在嘗試將存儲在我的工作目錄中的.json文件讀入一個jupyter筆記本,最終將其放入pandas數據幀中進行清理,但是我對json.load函數有困難。
數據結構如下:
{
"URL":"http://www.just-eat.co.uk/restaurants-cn-chinese-cardiff/menu",
"_id":{"$oid":"55f14312c7447c3da7051b26"},
"address":"228 City Road",
"address line 2":"Cardiff",
"name":".CN Chinese",
"outcode":"CF24",
"postcode":"3JH",
"rating":5,
"type_of_food":"Chinese"
}
我已手動輸入兩行數據來測試它哪個工作正常
data = [{"URL":"http://www.just-eat.co.uk/restaurants-cn-chinese-cardiff/menu","_id":{"$oid":"55f14312c7447c3da7051b26"},"address":"228 City Road","address line 2":"Cardiff","name":".CN Chinese","outcode":"CF24","postcode":"3JH","rating":5,"type_of_food":"Chinese"}, {"URL":"http://www.just-eat.co.uk/restaurants-atthai-ss9/menu","_id":{"$oid":"55f14312c7447c3da7051b27"},"address":"376 Rayleigh Road","address line 2":"Essex","name":"@ Thai","outcode":"SS9","postcode":"5PT","rating":5.5,"type_of_food":"Thai"}]
df = pd.DataFrame.from_dict(data, orient='columns')
df
URL _id address address line 2 name outcode postcode rating type_of_food
0 http://www.just-eat.co.uk/restaurants-cn-chine... {u'$oid': u'55f14312c7447c3da7051b26'} 228 City Road Cardiff .CN Chinese CF24 3JH 5.0 Chinese
1 http://www.just-eat.co.uk/restaurants-atthai-s... {u'$oid': u'55f14312c7447c3da7051b27'} 376 Rayleigh Road Essex @ Thai SS9 5PT 5.5 Thai
import json
但是當我嘗試使用2種不同的json.load方法讀取整個文件時,我收到相同的錯誤消息:
import json
with open('restaurant.json') as file:
data = json.load(file)
要么
import json
filename= 'restaurant.json'
Jdata= open(filename, 'r+')
print(json.load(Jdata))
我收到以下錯誤
ValueError Traceback (most recent call last)
<ipython-input-47-128297096a2b> in <module>()
3 filename= 'restaurant.json'
4 Jdata= open(filename, 'r+')
----> 5 print(json.load(Jdata))
/home/bdtech/anaconda2/lib/python2.7/json/__init__.pyc in load(fp, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
289 parse_float=parse_float, parse_int=parse_int,
290 parse_constant=parse_constant, object_pairs_hook=object_pairs_hook,
--> 291 **kw)
292
293
/home/bdtech/anaconda2/lib/python2.7/json/__init__.pyc in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
337 parse_int is None and parse_float is None and
338 parse_constant is None and object_pairs_hook is None and not kw):
--> 339 return _default_decoder.decode(s)
340 if cls is None:
341 cls = JSONDecoder
/home/bdtech/anaconda2/lib/python2.7/json/decoder.pyc in decode(self, s, _w)
365 end = _w(s, end).end()
366 if end != len(s):
--> 367 raise ValueError(errmsg("Extra data", s, end, len(s)))
368 return obj
369
ValueError: Extra data: line 2 column 1 - line 2549 column 1 (char 258 - 681632)
謝謝!
修復 - 額外數據錯誤是因為它只讀取一行
data = []
with open('restaurant.json') as f:
for line in f:
data.append(json.loads(line))
df = pd.DataFrame.from_dict(data, orient='columns')
將文件中的所有數據讀入數據幀,如同requireured
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.