有人送我這個代碼從json轉換爲csv格式。從json2cvs格式轉換時出錯
下面是json2csv的代碼。
import sys, json, csv
input = open(sys.argv[1])
json_array = json.load(input)
input.close()
item_data = json_array
if len(item_data) >= 1:
first_item_id = item_data[0]['item_id']
columns = item_data[0].keys()
csv_file = open(sys.argv[2], "wb")
writer = csv.writer(csv_file)
# there is currently a known bug where column names are partially uppercase, this will be fixed soon. the "map(lambda x: x.lower(), columns)" fixes this issue in the mean time
writer.writerow(map(lambda x: x.lower(), columns))
# here .items() is a standard python function
for item in item_data:
row = []
for column_name in columns:
if column_name.lower() == 'name_part': # lower required due to above issue
row.append(" ".join(item[column_name]))
else:
row.append(item[column_name])
writer.writerow(row)
這裏是我的JSON data.Which我保存爲transaction.json
{"comment": "Developer test ", "invoice_intern_external_ids": "", "invoice_payments": [{"payment_id": 8, "payment_method": "Refund", "timestamp": "2013-03-05", "invoice_id": 12, "writeoff_reason": "", "payment": 160.0}, {"payment_id": 9, "payment_method": "Cash", "timestamp": "2013-03-05", "invoice_id": 12, "writeoff_reason": "", "payment": 160.0}], "tax": 0.0, "pay_to_external_id": -1, "total": 0.0, "pay_to_contact_id": 13, "client_external_id": 11, "is_draft": false, "invoice_clinician_external_id": 999925, "location": "Therapy A", "invoice_clinician_id": 7, "bill_to_external_id": 11, "timestamp": "2013-03-05", "client_contact_id": 16, "subtotal": 0.0, "invoice_id": 26, "write_off": 0.0, "invoice_items": [{"item_tax": 0.0, "item_name": "InitialVisit_O", "timestamp": "2013-03-05", "item_unit_price": 160.0, "tax": 0.0, "invoice_item_id": 21, "invoice_instance_id": 26, "total": 0.0, "subtotal": 0.0, "item_description": "Initial Assessment/hour", "quantity": 0.0}], "billing_date": "2013-03-05", "invoice_intern_ids": "[]", "bill_to_contact_id": 16, "balance": 0.0, "invoice_instance_id": 12}
{"comment": "", "invoice_intern_external_ids": null, "invoice_payments": [], "tax": 0.0, "pay_to_external_id": -1, "total": 260.0, "pay_to_contact_id": 13, "client_external_id": -1, "is_draft": false, "invoice_clinician_external_id": null, "location": "Sports Medicine", "invoice_clinician_id": 7, "bill_to_external_id": -1, "timestamp": "2013-02-25", "client_contact_id": 15, "subtotal": 260.0, "invoice_id": 23, "write_off": 0.0, "invoice_items": [{"item_tax": 0.0, "item_name": "CompAsses", "timestamp": "2013-02-25", "item_unit_price": 260.0, "tax": 0.0, "invoice_item_id": 36, "invoice_instance_id": 23, "total": 260.0, "subtotal": 260.0, "item_description": "Comp Assess Report", "quantity": 1.0}], "billing_date": "2013-02-22", "invoice_intern_ids": "[]", "bill_to_contact_id": 15, "balance": 260.0, "invoice_instance_id": 10}
我試圖做c:\python.exe c:\json2csv.py c:\transaction.json c:\transaction.txt
我得到了錯誤
Extra data line2 column 1 - line 12 column1 (char 1105 - char 11267)
如果有人能更正代碼來獲取那麼所有的領域都很棒。 我甚至不需要csv中的所有字段。我只需要client_external_id
, invoice_clinician_id
, invoice_id
, location
,,item_unit_price
,item_description
, quantity
,billing_date
。
這已經很長時間了,我需要今天完成這個。請幫助。
您的輸入包含* multiple * JSON條目,而代碼只能處理單個JSON數據結構。也許你需要閱讀你的輸入文件*每行*? –
我該怎麼做? –
您發送的代碼與您的JSON文件中的數據結構*完全不匹配*。例如,沒有'item_id'鍵,也沒有'name_part'。你的JSON結構也是* nested *,它不能很好地轉換成CSV。 –