python json格式和csv文件转换

python json格式和csv文件转换

上代码

 1 import csv
 2 import json
 3 
 4 '''
 5 json格式示例 
 6 [{ "firstName":"Bill" , "lastName":"Gates" }, { "firstName":"George" , "lastName":"Bush" }, { "firstName":"Thomas" , "lastName":"Carter" }]
 7 '''
 8 #file:json to csv
 9 def transcsv(jsonpath, csvpath):
10     json_file = open(jsonpath, 'r', encoding='utf8')
11     csv_file = open(csvpath, 'w', newline='')
12     #读文件
13     ls = json.load(json_file)  #将json格式的字符串转换成python的数据类型,解码过程
14     data = [list(ls[0].keys())]  # 获取列名,即key
15     for item in ls:
16         data.append(list(item.values()))  # 获取每一行的值value
17     #写入文件
18     for line in data:
19         csv_file.write(",".join(line) + "\n")  # 以逗号分隔一行的每个元素,最后换行 fw.close() #关闭csv文件
20     #关闭文件
21     json_file.close()
22     csv_file.close()
23 #file:csv to json
24 def transjson(jsonpath, csvpath):
25     fw = open(jsonpath, 'w', encoding='utf8')   # 打开csv文件
26     fo = open(csvpath, 'r', newline='')    # 打开csv文件
27 
28     ls = []
29     for line in fo:
30         line = line.replace("\n", "")  # 将换行换成空
31         ls.append(line.split(","))  # 以,为分隔符
32     #print(ls)
33     #写入
34     for i in range(1, len(ls)):  # 遍历文件的每一行内容,除了列名
35         ls[i] = dict(zip(ls[0], ls[i]))  # ls[0]为列名,所以为key,ls[i]为value,
36         # zip()是一个内置函数,将两个长度相同的列表组合成一个关系对
37 
38     json.dump(ls[1:], fw, sort_keys=True, indent=4)
39     #将Python数据类型转换成json格式,编码过程
40     #默认是顺序存放,sort_keys是对字典元素按照key进行排序
41     #indet参数用语增加数据缩进,使文件更具有可读性
42 
43     # 关闭文件
44     fo.close()
45     fw.close()
46 
47 if __name__ == '__main__':
48     #transcsv('./testcase/my.json', './testcase/my.csv')
49     transjson('./testcase/write.json', './testcase/my.csv')

 

my.json文件内容:

[{ "firstName":"Bill" , "lastName":"Gates" }, { "firstName":"George" , "lastName":"Bush" }, { "firstName":"Thomas" , "lastName":"Carter" }]

 

posted @ 2019-05-28 15:27  Golover  阅读(9961)  评论(0编辑  收藏  举报