How can I convert JSON to CSV?

前端 未结 26 2161
余生分开走
余生分开走 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 22:49

    Use json_normalize from pandas:

    • Given the data provided, in a file named test.json.
    • encoding='utf-8' may not be necessary.
    • The following code takes advantage of the pathlib library.
    • .open is a method of pathlib.
    • Works with non-Windows paths too.
    import pandas as pd
    # As of Pandas 1.01, json_normalize as pandas.io.json.json_normalize is deprecated and is now exposed in the top-level namespace.
    # from pandas.io.json import json_normalize
    from pathlib import Path
    import json
    
    # set path to file
    p = Path(r'c:\some_path_to_file\test.json')
    
    # read json
    with p.open('r', encoding='utf-8') as f:
        data = json.loads(f.read())
    
    # create dataframe
    df = pd.json_normalize(data)
    
    # dataframe view
     pk            model  fields.codename           fields.name  fields.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
      4  auth.permission        add_group         Can add group                    2
     10  auth.permission      add_message       Can add message                    4
    
    # save to csv
    df.to_csv('test.csv', index=False, encoding='utf-8')
    

    CSV Output:

    pk,model,fields.codename,fields.name,fields.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
    4,auth.permission,add_group,Can add group,2
    10,auth.permission,add_message,Can add message,4
    

    Other Resources for more heavily nested JSON objects:

    • SO Answers:
      • Flatten a JSON array with python
      • How to flatten nested JSON recursively, with flatten_json?
      • How to json_normalize a column with NaNs

提交回复
热议问题