簡體   English   中英

在Python中將嵌套的JSON轉換為CSV

[英]Convert nested JSON to CSV in Python

我正在嘗試將Python中的JSON數據轉換為CSV並在一段時間后在Stack Exchange上找到了此代碼(鏈接: 如何將JSON轉換為CSV?

它在Python 3中不再起作用,給了我不同的錯誤。 有人知道如何修復Python 3嗎? 謝謝。

import csv
import json

x = """[
    {
        "pk": 22,
        "model": "auth.permission",
        "fields": {
            "codename": "add_logentry",
            "name": "Can add log entry",
            "content_type": 8
        }
    },
    {
        "pk": 23,
        "model": "auth.permission",
        "fields": {
            "codename": "change_logentry",
            "name": "Can change log entry",
            "content_type": 8
        }
    },
    {
        "pk": 24,
        "model": "auth.permission",
        "fields": {
            "codename": "delete_logentry",
            "name": "Can delete log entry",
            "content_type": 8
    }
    }
]"""

x = json.loads(x)

f = csv.writer(open("test.csv", "wb+"))

# Write CSV Header, If you dont need that, remove this line
f.writerow(["pk", "model", "codename", "name", "content_type"])

for x in x:
    f.writerow([x["pk"],
                x["model"],
                x["fields"]["codename"],
                x["fields"]["name"],
                x["fields"]["content_type"]])

您正在使用wb+將文件打開為二進制文件,而您正在嘗試寫str

f = csv.writer(open("test.csv", "w+"))

也許這段代碼會以某種方式幫助您理解這一點。

import json,csv    

data = []

with open('your_json_file_here.json') as file:
    for line in file:
        data.append(json.loads(line)) length = len(data)

with open('create_new_file.csv','w') as f:
    writer = csv.writer(f)
    writers = csv.DictWriter(f, fieldnames=['header1','header2'])
    writers.writeheader()
    for iter in range(length):

        writer.writerow((data[iter]['specific_col_name1'],data[iter]['specific_col_name2'])) f.close()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM