json文件与csv文件的互相转化

  • 2020.06.15

json转csv

import json
import csv
import pandas

'''
json文件转化为csv
2020.06.15
'''
def transJson2Csv(jsonpath = 'demo.json', csvpath = 'demo.csv'):
    json_file = open(jsonpath, 'r', encoding='utf8')
    csv_file = open(csvpath, 'w', newline='')
    keys = []
    writer = csv.writer(csv_file)

    json_data = json_file.read()
    dic_data = json.loads(json_data, encoding='utf8')

    for dic in dic_data:
        keys = dic.keys()
        # 写入列名
        writer.writerow(keys)
        break

    for dic in dic_data:
        for key in keys:
            if key not in dic:
                dic[key] = ''
        writer.writerow(dic.values())
    json_file.close()
    csv_file.close()

csv转json

'''
csv文件转化为json
2020.06.15
'''
def transCsv2Json(csvpath = 'demo.csv', jsonpath = 'demo.json'):
    df = pandas.read_csv(csvpath, encoding="utf-8")
    dict_list = []
    for index, row in df.iterrows():
        print(index)
        dict_row = row.to_dict()
        print(dict_row)
        dict_list.append(dict_row)
        print("--------------------------------------------------")

    with open(jsonpath, mode="a") as f:
        f.write(json.dumps(dict_list, ensure_ascii=False))

demo.json

[
    {
        "id": 1001,
        "name": "Tomy",
        "age": 12,
        "gender": "female"
    },
    {
        "id": 1002,
        "name": "Lucy",
        "age": 14,
        "gender": "female"
    }
]

demo.csv

id,name,age,gender
1001,Tomy,12,female
1002,Lucy,14,female
上次更新时间: 2020-06-30 17:49:00