2017-06-28 74 views
-1

我用下面的python腳本讀取和分析JSON文件讀取和解析JSON文件

import json 

with open('testdata.json', 'r') as raw_data: 

    content = json.load(raw_data) 
    print(content) 

有類似的數據:

{"grp":"1"; "total":"10"} 
{"event":"run", "timestamp":"2010-01-30 10:00:40", "id": "200", "distance": "5"} 
{"event":"walk", "timestamp":"2010-01-31 18:46:00", "id": "200", "disrance": "2"} 

,我發現了錯誤:

Traceback (most recent call last): 
    File "readdata.py", line 4, in <module> 
    content = json.load(raw_data) 
    File "/usr/lib/python2.7/json/__init__.py", line 290, in load **kw) 
    File "/usr/lib/python2.7/json/__init__.py", line 338, in loads 
return _default_decoder.decode(s) 
    File "/usr/lib/python2.7/json/decoder.py", line 369, in decode 
raise ValueError(errmsg("Extra data", s, end, len(s))) 
ValueError: Extra data: line 2 column 1 - line 3 column 1 (char 93 - 187) 

如果我有它的工作原理數據... 2個或更多的數據行的一行我得到的錯誤

看不到任何導致此問題的東西

+0

。 '{GRP:1;總共:10}'需要雙引號。我不確定json是否也需要條帶化數據,但無論如何,刪除前導標籤也是件好事 – Arount

+0

@Arount缺少雙引號是文件格式問題中最少的(缺少'[]'表示頂部級別列表和丟失',') – DeepSpace

+0

@DeepSpace肯定,但它是我第一次看到,我想現在我們指出這是一個格式問題,他可以修復它單獨無論如何 – Arount

回答

2

SO語法突出顯示解決了您的問題。

"distance': "5"} 
     ^

更改爲雙引號

但也有很多其他的問題。這裏是你的json文件的有效版本。

[ 
    {"grp":1, "total":10}, 
    {"event":"run", "timestamp":"2010-01-30 10:00:40", "id": "200", "distance": "5"}, 
    {"event":"walk", "timestamp":"2010-01-31 18:46:00", "id": "200", "disrance": "2"} 
] 

注意圍繞每個鍵的"。在key:value對之間的,,以及列表的元素之間的,

由於回溯說非常明確,你的JSON數據被嚴重格式化您可以使用驗證工具,您的JSON像jsonlint.com

+0

仍然會沒有解決不好的格式 – DeepSpace

+0

單引號是我的錯字 – ChrisJ

+0

我有包含JSON數據行的文件,如圖所示......是說我必須添加大括號才能使它成爲一個數組? – ChrisJ