利⽤python将json数据转换为csv格式的⽅法下⾯⼩编就为⼤家分享⼀篇利⽤python将json数据转换为csv格式的⽅法,具有很好的参考价值,希望对⼤家有所帮助。⼀起跟随⼩编过来看看吧
假设.json⽂件中存储的数据为:
{"type": "Point", "link": "www.dianping/newhotel/22416995", "coordinates": [116.37256372996957, 40.39798447055443], "category": "经济型", "name": "北京荷塘⼭庄", "count": "278", "address": "北京市怀柔区黄花城村安四路", "price": "380"}
{"type": "Point", "link": "www.dianping/newhotel/19717653", "coordinates": [116.56881588256466, 40.43310967948417], "category": "经济型", "name": "慕⽥峪长城鱼师傅乡村酒店", "count": "89", "address": "北京市怀柔区渤海镇苇店村(慕⽥峪长城下3公⾥处,近怀黄路)", "price": "258"}
{"type": "Point", "link": "www.dianping/newhotel/58365289", "coordinates": [116.62874974822378, 40.45610264855833], "category": "经济型", "name": "北京蜜桃⼉亲⼦客栈", "count": "119", "address": "北京市怀柔区神堂峪风景区下官地11号", "price": "549"}
现在需要将上⾯的这些数据存为csv格式,其中字典的keys为csv中的属性名称,字典的values为csv中属性对应的值。
如果只需要按照json的keys来⽣成csv,那么操作⽐较简单,直接按照下⾯的⽅法即可:
#-*-coding:utf-8-*-
import csv
import json
模块建房大概费用多少import sys
import codecs
def trans(path):
jsonData = codecs.open(path+'.json', 'r', 'utf-8')
# csvfile = open(path+'.csv', 'w') # 此处这样写会导致写出来的⽂件会有空⾏
# csvfile = open(path+'.csv', 'wb') # python2下python解析json文件
csvfile = open(path+'.csv', 'w', newline='') # python3下
writer = csv.writer(csvfile, delimiter='\t')
flag = True
for line in jsonData:
dic = json.loads(line[0:-1])
if flag:
# 获取属性列表
keys = list(dic.keys())
print (keys)
jsonobject maven依赖writer.writerow(keys) # 将属性列表写⼊csv中
flag = Falsejava课程网课免费
else:
# 读取json数据的每⼀⾏,将values数据⼀次⼀⾏的写⼊csv中excel乘法公式为啥不出结果
writer.writerow(list(dic.values()))
jsonData.close()
csvfile.close()
if __name__ == '__main__':
path=str(sys.argv[1]) # 获取path参数
print (path)
trans(path)
在python3下运⾏,命令⾏输⼊
python C:\Users\MaMQ\Documents\jsonToCsv.py C:\Users\MaMQ\Documents\data\geoFood
其中第三个参数为需要转换的⽂件的路径和其名称,将其后缀删除。运⾏⽂件后即可得到转换后的csv⽂件。
如果需要对json⽂件中每个字典的key字段进⾏修改,⽐如需要将上⾯dict中的coordinate中的经纬度数据取出来存为x、y数据,则可以按照下⾯的⽅法(此⽅法还可以调整每个属性显⽰的顺序,效果更好⼀点):
import csv
import json
import sys
import codecs
def trans(path):
jsonData = codecs.open(path+'.json', 'r', 'utf-8')
# csvfile = open(path+'.csv', 'w') # 此处这样写会导致写出来的⽂件会有空⾏
# csvfile = open(path+'.csv', 'wb') # python2下
csvfile = open(path+'.csv', 'w', newline='') # python3下
writer = csv.writer(csvfile, delimiter='\t')
keys=['id', 'name', 'category', 'price', 'count', 'type', 'address', 'link', 'x', 'y']
writer.writerow(keys)
七种常量元素记忆口诀i = 1
for dic in jsonData:
dic = json.loads(dic[0:-1])
x = dic['coordinates'][0]
y = dic['coordinates'][1]
writer.writerow([str(i),dic['name'],dic['category'],dic['price'],dic['count'],dic['type'],dic['address'],dic['link'],x,y])
i += 1
jsonData.close()
csvfile.close()
if __name__ == '__main__':
path = str(sys.argv[1])
print (path)
trans(path)
运⾏⽅法同上。
json⽂件是我在⼤众点评抓取的数据,存储格式为utf-8。建议使⽤codecs包来读取json数据,可指定编码⽅式。jsonData = codecs.open(path + '.json', 'r', encoding='utf-8')
以上这篇利⽤python将json数据转换为csv格式的⽅法就是⼩编分享给⼤家的全部内容了

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。