2017-05-05 99 views
0

我想使用python熊貓來閱讀json文件。該文件的每一行都是JSON中的完整對象。如何閱讀使用Python熊貓的json文件?

我用下面版本 -

蟒蛇:2.7.6

大熊貓:1.19.1

JSON文件 -

{"id":"111","p_id":"55","name":"aaa","notes":"","childs":[]} 
{"id":"222","p_id":"56","name":"bbb","notes":"","childs":[]} 
{"id":"333","p_id":"75","name":"ccc","notes":"","childs":[]} 
{"id":"444","p_id":"76","name":"ddd","notes":"","childs":["abc","efg","pqr" 
,"rtu"]} 

我使用下面的代碼讀取json文件 -

df = pd.read_json("temp.txt", lines = True) 
print df 

問題是,在json文件中,「childs」鍵包含一個未知索引數組,在「\ n」之間可用。所以如果我運行上面的代碼,我得到ValueError:預期的對象或值但如果我刪除「\ n」之後「pqr」可用我的代碼得到工作。

我不想從我的數據中刪除可用的「\ n」。我想在我的代碼中處理這個問題。我想只使用python熊貓而不是python json庫以良好的方式處理數據。

我如何才能利用python熊貓並處理這種類型的文件?

+0

以字符串形式讀取整個文件,並用新行分割,然後你有4個json字符串,你可以簡單地解析。 –

+0

@ErikŠťastný-好吧,但我怎麼可以維持熊貓數據框中的數據後,吐出新的線? – kit

+0

使json文件的每一行都成爲一個有效的json,是一種更好的方法 – pktangyue

回答

0

​​由於「pqr」之後的新行不起作用。您可以嘗試修復該行或嘗試將整個事件格式化爲有效的JSON。我在這裏做後者加入後的新行逗號和周圍用方括號括整個事情,形成正確的JSON數組:

with open('temp.txt') as f: 
    content = f.read() 

pd.read_json('[' + content.replace('}\n', '},') + ']') 
2

首先檢查它是否是一個有效的JSON文件或不使用JSON validator網站

一旦文件是有效的JSON格式,你可以使用下面的代碼,它讀成數據幀

with open("training.json") as datafile: 
    data = json.load(datafile) 
dataframe = pd.DataFrame(data) 

希望這會有所幫助。