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