Кто-то прислал мне этот код для преобразования из 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
, я tem_name
, item_unit_price
, item_description
, quantity
, billing_date
.
Это долгое время рассматривалось. Мне нужно получить это завершено сегодня. Помогите.
Ваш вход состоит из * нескольких * JSON записей, в то время как код может обрабатывать только отдельные структуры данных JSON. Возможно, вам нужно прочитать свой входной файл * на строку *? –
как это сделать? –
Код, который вы отправили, не соответствует структуре данных в вашем файле JSON * вообще *.В нем нет, например, 'item_id', или' name_part'. Ваша структура JSON также * вложенная *, что не будет хорошо переводиться в CSV. –