簡體   English   中英

將多行JSON轉換為python字典

[英]Convert multiline JSON to python dictionary

我目前在一個包含多個JSON行(大約13,000行)的文件中擁有此數據,但以下示例已縮短:

{"first_name":"John","last_name":"Smith","age":30}
{"first_name":"Tim","last_name":"Johnson","age":34}

我有以下代碼:

import json
import codecs

with open('brief.csv') as f:
    for line in f:
        tweet = codecs.open('brief.csv', encoding='utf8').read()
        data = json.loads(tweet)
print data
print data.keys()
print data.values()

如果我的文件中只有一行數據,那么效果很好。 但是,我似乎無法弄清楚如何逐行將每一行更改為字典。 當我嘗試在多行上運行此代碼時,由於代碼只想處理兩個大括號,即第一行,所以我收到ValueError(errmsg(“額外數據”,s結束,len(s)))錯誤。 我最終希望能夠選擇某些鍵(例如first_name和age),然后僅從文件中打印出這些值。

任何想法如何做到這一點?

您正在為每一行讀取整個文件一次,請嘗試以下操作:

import json
import codecs

tweets = []

with codecs.open('brief.csv', encoding='utf8') as f:
    for line in f.readlines():
        tweets.append(json.loads(line))

print tweets

for tweet in tweets:
    print tweet.keys()
    print tweet['last_name']

也許你可以像下面這樣簡化

>>> import simplejson as json 
>>> with open("brief.csv") as f:
...     for line in f:
...         data = json.loads(line)
...         print data
...         print data.values()
...         print data.keys()

{'first_name': 'John', 'last_name': 'Smith', 'age': 30}
['John', 'Smith', 30]
['first_name', 'last_name', 'age']
{'first_name': 'Tim', 'last_name': 'Johnson', 'age': 34}
['Tim', 'Johnson', 34]
['first_name', 'last_name', 'age']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM