我无法从从Leadfeeder API获取的某些数据中生成格式正确的CSV文件。在当前正在创建的csv文件中,并非所有值都在一行中,id和Leads比其他值高一列。就像这里:
我后来还喜欢加载另一个json文件,并使用它在id上映射一些值,然后将每条线索的访问量也放入我的csv文件中。
您对此有何建议?
到目前为止,这是我的代码:
import json
import csv
csv_columns = ['name', 'industry', 'website_url', 'status', 'crm_lead_id', 'crm_organization_id', 'employee_count', 'id', 'type' ]
with open('data.json', 'r') as d:
d = json.load(d)
csv_file = 'lead_daten.csv'
try:
with open('leads.csv', 'w', newline='') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=csv_columns, extrasaction='ignore')
writer.writeheader()
for item in d['data']:
writer.writerow(item)
writer.writerow(item['attributes'])
except IOError:
print("I/O error")
我的json数据具有以下结构: 我还需要一些嵌套值,例如关系中的id!
{
"data": [
{
"attributes": {
"crm_lead_id": null,
"crm_organization_id": null,
"employee_count": 5000,
"facebook_url": null,
"first_visit_date": "2019-01-31",
"industry": "Furniture",
"last_visit_date": "2019-01-31",
"linkedin_url": null,
"name": "Example Inc",
"phone": null,
"status": "new",
"twitter_handle": "example",
"website_url": "http://www.example.com"
},
"id": "s7ybF6VxqhQqVM1m1BCnZT_8SRo9XnuoxSUP5ChvERZS9",
"relationships": {
"location": {
"data": {
"id": "8SRo9XnuoxSUP5ChvERZS9",
"type": "locations"
}
}
},
"type": "leads"
},
{
"attributes": {
"crm_lead_id": null,
答案 0 :(得分:0)
写入csv时,必须一次写入一整行。您当前的代码只用id和type写入一行,然后用其他字段写入另一行。
正确的方法是首先完全构建一个包含所有字段的字典,然后再执行一次操作。代码可能是:
...
writer.writeheader()
for item in d['data']:
item.update(item["attributes"])
writer.writerow(item)
...