2016-09-09 76 views
-3

我是JSON和Python的新手,對此非常感激。如何將json文件讀入python?

我讀到json.loads但很困惑

如何閱讀使用json.loads文件成Python?

下面是我的JSON文件格式:

{ 
     "header": { 
     "platform":"atm" 
     "version":"2.0" 
     } 
     "details":[ 
     { 
     "abc":"3" 
     "def":"4" 
     }, 
     { 
     "abc":"5" 
     "def":"6" 
     }, 
     { 
     "abc":"7" 
     "def":"8" 
     }  
     ] 
    } 

我的要求是詳細閱讀所有​​"def"的值,並添加這是一個新的列表這樣[(1,2),(3,4),(5,6),(7,8)]。新列表將用於創建火花數據框。

+1

看來你忘了,包括在你的問題的問題。 – Biffen

+0

你的問題是什麼,你嘗試了什麼? – wander95

+0

我如何在Python中實現上述功能。我讀了關於json.loads,但很困惑: –

回答

1

打開文件,並得到一個文件句柄:

fh = open('thefile.json') 

https://docs.python.org/2/library/functions.html#open

然後,文件句柄傳遞到json.load():(不要使用負荷 - 這是字符串)

import json 
data = json.load(fh) 

https://docs.python.org/2/library/json.html#json.load

從那裏,你可以輕鬆處理代表您的json編碼數據的python字典。

new_list = [(detail['abc'], detail['def']) for detail in data['details']] 

請注意,您的JSON格式也是錯誤的。你需要在很多地方使用逗號分隔符,但這不是問題。

1

我試圖儘可能瞭解您的問題,但它看起來像格式不好。

首先你的json blob是無效的json,它缺少了很多逗號。這可能是你在找什麼:

{ 
    "header": { 
     "platform": "atm", 
     "version": "2.0" 
    }, 
    "details": [ 
     { 
      "abc": "3", 
      "def": "4" 
     }, 
     { 
      "abc": "5", 
      "def": "6" 
     }, 
     { 
      "abc": "7", 
      "def": "8" 
     } 
    ] 
} 

現在假設你想在python解析這一點,你必須做到以下幾點。

import json 

json_blob = '{"header": {"platform": "atm","version": "2.0"},"details": [{"abc": "3","def": "4"},{"abc": "5","def": "6"},{"abc": "7","def": "8"}]}' 
json_obj = json.loads(json_blob) 

final_list = [] 

for single in json_obj['details']: 
    final_list.append((int(single['abc']), int(single['def']))) 

print(final_list) 

這將打印以下內容:[(3,4),(5,6),(7,8)]

+0

由於提到了FlipMcF,如果您正在從文件中讀取數據,json.load()將處理像讀取這樣的文件,這在python文檔中有提到 – JJK

+0

非常感謝!閱讀卡夫卡隊列中的消息 –