假设
.json
文件中存储的数据为:
{"type": "Point", "link": "http://www.dianping.com/newhotel/22416995", "coordinates": [116.37256372996957, 40.39798447055443], "category": "经济型", "name": "北京荷塘山庄", "count": "278", "address": "北京市怀柔区黄花城村安四路", "price": "380"}
{"type": "Point", "link": "http://www.dianping.com/newhotel/19717653", "coordinates": [116.56881588256466, 40.43310967948417], "category": "经济型", "name": "慕田峪长城鱼师傅乡村酒店", "count": "89", "address": "北京市怀柔区渤海镇苇店村(慕田峪长城下3公里处,近怀黄路)", "price": "258"}
{"type": "Point", "link": "http://www.dianping.com/newhotel/58365289", "coordinates": [116.62874974822378, 40.45610264855833], "category": "经济型", "name": "北京蜜桃儿亲子客栈", "count": "119", "address": "北京市怀柔区神堂峪风景区下官地11号", "price": "549"}
现在需要将上面的这些数据存为csv格式,其中字典的keys
为csv中的属性名称,字典的values
为csv中属性对应的值。
如果只需要按照json的keys来生成csv,那么操作比较简单,直接按照下面的方法即可:
import csv
import json
import sys
import codecs
def trans(path):
jsonData = codecs.open(path + '.json', 'r', 'utf-8')
csvfile = open(path + '.csv', 'w', newline='')
writer = csv.writer(csvfile, delimiter=',')
flag = True
for line in jsonData:
dic = json.loads(line)
if flag:
keys = list(dic.keys())
print(keys)
writer.writerow(keys)
flag = False
writer.writerow(list(dic.values()))
jsonData.close()
csvfile.close()
if __name__ == '__main__':
path=str(sys.argv[1])
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', newline='')
writer = csv.writer(csvfile, delimiter=',')
keys = ['id', 'name', 'category', 'price', 'count', 'type', 'address', 'link', 'x', 'y']
writer.writerow(keys)
i = 1
for line in jsonData:
dic = json.loads(line)
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')
欢迎交流讨论。
参考资料:
[1] csv.writer写入文件有多余的空行
假设.json文件中存储的数据为:{"type": "Point", "link": "http://www.dianping.com/newhotel/22416995", "coordinates": [116.37256372996957, 40.39798447055443], "category": "经济型", "name": &
import json
import pandas as pd
json1="C:/Users/S/Desktop/不同数据集U_RATIO(BP)/json/1.json"
with open(json1, 'r', encoding='UTF-8') as file_in:
@本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府
下面小编就为大家分享一篇利用python将json数据转换为csv格式的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
假设.json文件中存储的数据为:
{"type": "Point", "link": "http://www.dianping.com/newhotel/22416995", "coordinates": [116.37256372996957, 40.39798447055443], "cate
JSON(JavaScript Object Notation, JS 对象标记)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
它基于ECMAScript(w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。
JSON支持数据格式:
对象(字典)。使用花括号。
数组(列表)。使用方括号。
整形、浮点型、布尔类型还有null类型。
字符串类型(字符串必须要用
JSON介绍
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,方便人们阅读和编写。任何支持的数据类型都可以通过json来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型,其特点是:
对象表示为键值对
数据由逗号分隔
花括号保...
json_data[triplet][0][subject]
json_data[triplet][0][relation]
json_data[triplet][0][obejct]
json_data[triplet][0][caption]
我需要 annotations中的caption,那我就可以这样指定
json_data[annotations][1][caption
将 JSON 文件转换为 CSV 文件可以使用 Python 中的 pandas 库。首先,需要使用 pandas 的 `read_json` 函数读取 JSON 文件,然后使用 `to_csv` 函数将数据写入 CSV 文件。
以下是一个示例代码:
```python
import pandas as pd
# 读取 JSON 文件
df = pd.read_json('data.json')
# 将数据写入 CSV 文件
df.to_csv('data.csv', index=False)
这将创建一个名为 `data.csv` 的 CSV 文件,其中包含 JSON 文件中的数据。