How can I convert JSON to CSV?

前端 未结 26 2070
余生分开走
余生分开走 2020-11-21 22:32

I have a JSON file I want to convert to a CSV file. How can I do this with Python?

I tried:

import json
import c         


        
26条回答
  •  野性不改
    2020-11-21 23:04

    First, your JSON has nested objects, so it normally cannot be directly converted to CSV. You need to change that to something like this:

    {
        "pk": 22,
        "model": "auth.permission",
        "codename": "add_logentry",
        "content_type": 8,
        "name": "Can add log entry"
    },
    ......]
    

    Here is my code to generate CSV from that:

    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"]])
    

    You will get output as:

    pk,model,codename,name,content_type
    22,auth.permission,add_logentry,Can add log entry,8
    23,auth.permission,change_logentry,Can change log entry,8
    24,auth.permission,delete_logentry,Can delete log entry,8
    

提交回复
热议问题