2015-05-20 7 views
-2

Я новичок в python или JSON. У меня есть файл с данными JSON.Python AND JSON Parsing

Когда я попытался прочитать файл. «Элементы» - это ключ к файлу. Я использовал следующий скрипт python:

data=pandas.read_json('fileName.json') #using pandas 
df=pandas.DataFrame(data) or json.loads #-> to read the file 
print df.get('Items', {}) #-> to read entire file 
print df['Items'][0]['Patron'] #-> I can read an individual Patron like at '0' or '100'. But I want to generate the list of all 'patron' from the list. How do I do that? Any advise? 

Если я удаляю [0], я получаю ключевую ошибку или что-то в этом роде. Я уверен, что из-за невозможности доступа к словарю. Есть ли способ разрешить это?

{"Items": [{ 
    "Activity": "search.api", 
    "Library": 1531, 
    "Patron": 583586, 
    "Tag": "browse-eaudio-religion", 
    "Items": [ 
    "mediatype:eaudio", 
    "genre:religion", 
    "libraryid:1531", 
    "ownership:owned", 
    "usertype:patron", 
    "page-count:5", 
    "page-index:0", 
    "page-size:60", 
    "resultset-count:290", 
    "sort:" 
    ], 
    "SearchType": "browse", 
    "MediaType": "eaudio", 
    "Genre": "religion", 
    "NamedQuery": null, 
    "Input": null, 
    "ResultsetCount": 290, 
    "Year": 2015, 
    "Month": 4, 
    "Day": 0, 
    "Hour": 13 
},{ 
    "Activity": "search.api", 
    "Library": 985, 
    "Patron": 674919, 
    "Tag": "quick-author", 
    "Items": [ 
    "libraryid:985", 
    "ownership:owned", 
    "usertype:patron", 
    "page-count:93", 
    "page-index:0", 
    "page-size:60", 
    "resultset-count:5552", 
    "sort:author" 
    ], 
    "SearchType": null, 
    "MediaType": "", 
    "Genre": "", 
    "NamedQuery": null, 
    "Input": null, 
    "ResultsetCount": 5552, 
    "Year": 2015, 
    "Month": 4, 
    "Day": 0, 
    "Hour": 13 
} 
+0

ответ Khelweed3- Клауса ниже решает эту проблему. Спасибо за время – kneupane

+0

, почему использование панд, но не встроенный модуль 'json'? –

+0

P.R.10- Я действительно пробовал оба. Использование Pandas просто облегчает мой статистический анализ :-) – kneupane

ответ

0
patron_list = [item.get('Patron') for item in df['Items']] 
+0

Это потрясающе. Спасибо, Клаус. – kneupane

0
# this is your data, simplified a bit, 
# and indented for better readability: 
data = { 
    "Items": [ 
     { 
      "Activity": "search.api", 
      "Library": 1531, 
      "Patron": 583586, 
      "Tag": "browse-eaudio-religion", 
     }, 
     { 
      "Activity": "search.api", 
      "Library": 985, 
      "Patron": 674919, 
      "Tag": "quick-author", 
     } 
    ] 
} 

# so you want 'Patron' field from every element in list data['Items'] 

# you can use list comprehension for this: 
patrons = [item['Patron'] for item in data['Items']] 

print patrons 
# output: 
# [583586, 674919] 
+0

Спасибо, м.вашовки. – kneupane