2014-02-23 64 views
0

我有以下JSON轉儲。我喜歡提取術語(例如「作業」)和計數(例如「46」)通過JSON解析

{u'kind': u'bigquery#queryResponse', u'rows': [{u'f': [{u'v': u'jobs'}, {u'v': u'46'}]},  {u'f': [{u'v': u'employment'}, {u'v': u'24'}]}, {u'f': [{u'v': u'Employment'}, {u'v': u'20'}]}, {u'f': [{u'v': u'donate furniture'}, {u'v': u'16'}]}, {u'f': [{u'v': u'feeding the homeless'}, {u'v': u'16'}]}, {u'f': [{u'v': u'Perth stores'}, {u'v': u'14'}]}, {u'f': [{u'v': u'bed'}, {u'v': u'14'}]}, {u'f': [{u'v': u'Jobs'}, {u'v': u'14'}]}, {u'f': [{u'v': u'food parcels'}, {u'v': u'14'}]}, {u'f': [{u'v': u'history'}, {u'v': u'14'}]}, {u'f': [{u'v': u'Adherent'}, {u'v': u'12'}]}, {u'f': [{u'v': u'volunteer'}, {u'v': u'12'}]}, {u'f': [{u'v': u'Historical society'}, {u'v': u'12'}]}, {u'f': [{u'v': u'Donate furniture'}, {u'v': u'12'}]}, {u'f': [{u'v': u'pick up'}, {u'v': u'12'}]}, {u'f': [{u'v': u'Careers'}, {u'v': u'12'}]}, {u'f': [{u'v': u'contact'}, {u'v': u'12'}]}, {u'f': [{u'v': u'helping with a funeral'}, {u'v': u'10'}]}, {u'f': [{u'v': u'Basketball'}, {u'v': u'10'}]}, {u'f': [{u'v': u'email'}, {u'v': u'10'}]}], u'jobReference': {u'projectId': u'2323', u'jobId': u'2323'}, u'jobComplete': True, u'totalRows': u'20', u'totalBytesProcessed': u'0', u'cacheHit': True, u'schema': {u'fields': [{u'type': u'STRING', u'name': u'Query', u'mode': u'NULLABLE'}, {u'type': u'INTEGER', u'name': u'Count', u'mode': u'NULLABLE'}]}} 

我喜歡以表格格式打印術語和計數。

我有一個函數來做到這一點:

print_two_cols(term1,term2) 

但我不知道如何通過上面的JSON迭代。我正在使用Python 2.7。

+2

這不是JSON。這不是什麼關閉json ... –

+0

這就是我從BigQuery得到的結果 –

+0

這不是JSON字符串,但它看起來像是如果使用json模塊解析JSON會得到什麼結果。 – user2357112

回答

2

通過rows鍵循環;每個條目是一個f關鍵一本字典,字典包含與v鍵:

for row in result['rows']: 
    job, count = (col['v'] for col in row['f']) 
    print_two_cols(job, count) 

演示:

>>> result = {u'kind': u'bigquery#queryResponse', u'rows': [{u'f': [{u'v': u'jobs'}, {u'v': u'46'}]},  {u'f': [{u'v': u'employment'}, {u'v': u'24'}]}, {u'f': [{u'v': u'Employment'}, {u'v': u'20'}]}, {u'f': [{u'v': u'donate furniture'}, {u'v': u'16'}]}, {u'f': [{u'v': u'feeding the homeless'}, {u'v': u'16'}]}, {u'f': [{u'v': u'Perth stores'}, {u'v': u'14'}]}, {u'f': [{u'v': u'bed'}, {u'v': u'14'}]}, {u'f': [{u'v': u'Jobs'}, {u'v': u'14'}]}, {u'f': [{u'v': u'food parcels'}, {u'v': u'14'}]}, {u'f': [{u'v': u'history'}, {u'v': u'14'}]}, {u'f': [{u'v': u'Adherent'}, {u'v': u'12'}]}, {u'f': [{u'v': u'volunteer'}, {u'v': u'12'}]}, {u'f': [{u'v': u'Historical society'}, {u'v': u'12'}]}, {u'f': [{u'v': u'Donate furniture'}, {u'v': u'12'}]}, {u'f': [{u'v': u'pick up'}, {u'v': u'12'}]}, {u'f': [{u'v': u'Careers'}, {u'v': u'12'}]}, {u'f': [{u'v': u'contact'}, {u'v': u'12'}]}, {u'f': [{u'v': u'helping with a funeral'}, {u'v': u'10'}]}, {u'f': [{u'v': u'Basketball'}, {u'v': u'10'}]}, {u'f': [{u'v': u'email'}, {u'v': u'10'}]}], u'jobReference': {u'projectId': u'2323', u'jobId': u'2323'}, u'jobComplete': True, u'totalRows': u'20', u'totalBytesProcessed': u'0', u'cacheHit': True, u'schema': {u'fields': [{u'type': u'STRING', u'name': u'Query', u'mode': u'NULLABLE'}, {u'type': u'INTEGER', u'name': u'Count', u'mode': u'NULLABLE'}]}} 
>>> for row in result['rows']: 
...  job, count = (col['v'] for col in row['f']) 
...  print job, count 
... 
jobs 46 
employment 24 
Employment 20 
donate furniture 16 
feeding the homeless 16 
Perth stores 14 
bed 14 
Jobs 14 
food parcels 14 
history 14 
Adherent 12 
volunteer 12 
Historical society 12 
Donate furniture 12 
pick up 12 
Careers 12 
contact 12 
helping with a funeral 10 
Basketball 10 
email 10 
+0

謝謝你。像魅力一樣工作。我是python的新手,不知道我能做到這一點。 –