0
我試圖將查詢的開源數據(here, for reference)轉換爲csv。我能使用requests
包如下訪問和查詢數據:在Python中將JSON轉換爲CSV,處理導出字段內的字典
import requests
import gzip
import csv
url = "https://data.cityofchicago.org/resource/6zsd-86xi.json"
response = requests.get(url)
print response.status_code
if response.status_code == 200:
print "Connection successful. Decoding JSON"
data = response.json()
數據的每一行有多達22列,可能會或可能不存在。如果列的數據不存在,則JSON對將不存在,從而導致KeyErrors。爲了嘗試和解決這個問題,我使用csv.DictWriter
類與field_names
和restval=None
參數:
field_names = ['id',
'case_number',
'date',
'block',
'iucr',
'primary_type',
'description',
'location_description',
'arrest',
'domestic',
'beat',
'district',
'ward',
'community_area',
'fbi_code',
'x_coordinate',
'y_coordinate',
'year',
'updated_on',
'latitude',
'longitude',
'location'
]
file_name = 'open_data_test.csv.gz'
local_file = gzip.open('/tmp/' + file_name, "wb")
output = csv.DictWriter(local_file,
fieldnames=field_names,
restval=None,
extrasaction='ignore',
delimiter='|',
quoting=csv.QUOTE_ALL,
quotechar='"',
doublequote=True,
lineterminator='\n')
for row in data:
output.writerow(row)
這寫數據,但是在最後一欄「位置」本身是包含「類型」和「座標字典「(例如:"{u'type': u'Point', u'coordinates': [-87.711766, 41.880909]}"
)。我只想要「座標」數據(如果存在)。
如何將此列的'座標'部分寫入輸出文件(如果存在數據)?編輯field_names
包括'location'[1]
或'location'['coordinates']
似乎不起作用。
如何通過你的'dict.keys循環()'如果'鍵==「coordinates''然後只寫' dict ['coordinates']'? –
'if'location'in row:row ['location'] = row ['location'] ['coordinates']' –