资讯专栏INFORMATION COLUMN

Python怎么全面解析json数据,保存csv文件?

89542767 / 273人阅读

  小编写这篇文章的主要目的,是来给大家做一个解答,解答的内容主要是python解析json数据,涉及到的知识点还是比较的多的,那么,做完数据之后,怎么去保存csv文件呢?下面就给大家详细解答下。


  解析json数据并保存为csv文件


  首先导入两个包:


  import json
  import pandas as pd


  打开json文件并读取:


  with open('2.json',encoding='utf-8')as f:
  line=f.readline()
  d=json.loads(line)
  f.close()


  读取的json数据会以字典的形势保存,按照字典的读取方式获取自己想要的数据:


  datas_x=[]
  datas_y=[]
  for dss in d:
  datas_x.append(float(dss["pos"]["x"]))
  datas_y.append(float(dss["pos"]["z"]))


  将数据保存到列表中,然后创建pandas的DataFrame,DataFrame是由多种类型的列构成的二维标签数据结构。


  path_x=pd.Series(datas_x)
  path_y=pd.Series(datas_y)
  path_df=pd.DataFrame()
  path_df['pathx']=path_x
  path_df['pathy']=path_y


  最后将数据保存到csv中。


  filepath="E:pythonpython2021202104409path_data.csv"
  path_df.to_csv(filepath,index=False,header=False)

  完整代码


  import json
  import pandas as pd
  filepath="E:pythonpython2021202104409path_data.csv"
  with open('2.json',encoding='utf-8')as f:
  line=f.readline()
  d=json.loads(line)
  f.close()
  datas_x=[]
  datas_y=[]
  for dss in d:
  datas_x.append(float(dss["pos"]["x"]))
  datas_y.append(float(dss["pos"]["z"]))
  path_x=pd.Series(datas_x)
  path_y=pd.Series(datas_y)
  path_df=pd.DataFrame()
  path_df['pathx']=path_x
  path_df['pathy']=path_y
  path_df.to_csv(filepath,index=False,header=False)
  将json任意行文件转为csv文件并保存
  将json格式的前3000条数据存入csv

  json格式类型:


  {"address":"华山路31号","addressExtend":"屯溪老街","amenities":[1,2,3,5,10,12],"brandName":null,"businessZoneList":null,"cityCode":1004,"cityName":"黄山","coverImageUrl":"https://img20.360buyimg.com/hotel/jfs/t16351/270/1836534312/106914/9b443bc4/5a68e68aN23bfaeda.jpg","districtName":"屯溪区","geoInfo":{"distance":3669,"name":"市中心","type":1,"typeName":"市中心"},"grade":5,"hotelId":328618,"location":{"lat":"29.717982","lon":"118.299707"},"name":"黄山国际大酒店","payMode":[1,2],"price":362,"priceStatus":1,"promotion":[103],"saleType":1,"score":4.8,"star":5,"themes":[3,2,4],"totalComments":133}
  {"address":"金城镇珠山82号","addressExtend":"","amenities":null,"brandName":null,"businessZoneList":[{"businessZoneId":2384,"businessZoneName":"金门机场","poiType":null}],"cityCode":1174,"cityName":"泉州","coverImageUrl":null,"districtName":null,"geoInfo":{"distance":63229,"name":"市中心","type":1,"typeName":"市中心"},"grade":2,"hotelId":763319,"location":{"lat":"24.396442","lon":"118.314335"},"name":"金门珠山82号民宿","payMode":null,"price":null,"priceStatus":1,"promotion":null,"saleType":0,"score":null,"star":0,"themes":[],"totalComments":null}


  json转为csv


  import csv
  import json
  import codecs
  '''
  将json文件格式转为csv文件格式并保存。
  '''
  class Json_Csv():
  #初始化方法,创建csv文件。
  def __init__(self):
  self.save_csv=open('D:/hotels_out.csv','w',encoding='utf-8',newline='')
  self.write_csv=csv.writer(self.save_csv,delimiter=',')#以,为分隔符
  def trans(self,filename):
  with codecs.open(filename,'r',encoding='utf-8')as f:
  read=f.readlines()
  flag=True
  for index,info in enumerate(read):
  data=json.loads(info)
  if index<3000:#读取json文件的前3000行写入csv文件。要是想写入全部,则去掉判断。
  if flag:#截断第一行当做head
  keys=list(data.keys())#将得到的keys用列表的形式封装好,才能写入csv
  self.write_csv.writerow(keys)
  flag=False#释放
  value=list(data.values())#写入values,也要是列表形式
  self.write_csv.writerow(value)
  self.save_csv.close()#写完就关闭
  if __name__=='__main__':
  json_csv=Json_Csv()
  path='D:/hotels.txt'
  json_csv.trans(path)


  到此为止,这篇文章给大家解答完毕,希望能给各位读者带来帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128290.html

相关文章

  • Python3网络爬虫实战---31、数据存储:文件存储

    摘要:如果该文件已存在,文件指针将会放在文件的结尾。运行结果以上是读取文件的方法。为了输出中文,我们还需要指定一个参数为,另外规定文件输出的编码。 上一篇文章:Python3网络爬虫实战---30、解析库的使用:PyQuery下一篇文章:Python3网络爬虫实战---32、数据存储:关系型数据库存储:MySQL 我们用解析器解析出数据之后,接下来的一步就是对数据进行存储了,保存的形式可以...

    dreamans 评论0 收藏0
  • 女友忽然欲买文胸,但不知何色更美,Python解之【全程实战,议藏之】

    摘要:文章目录情景再现本文关键词挑个软柿子单页爬取数据处理翻页操作撸代码主调度函数页面抓取函数解析保存函数可视化颜色分布评价词云图源码获取方式情景再现今日天气尚好,女友忽然欲买文胸,但不知何色更美,遂命吾剖析何色买者益众,为点议,事后而奖励之。 ...

    宠来也 评论0 收藏0
  • scrapy-redis分布式爬虫框架详解

    摘要:分布式爬虫框架详解随着互联网技术的发展与应用的普及,网络作为信息的载体,已经成为社会大众参与社会生活的一种重要信息渠道。下载器中间件位于引擎和下载器之间的框架,主要是处理引擎与下载器之间的请求及响应。 scrapy-redis分布式爬虫框架详解 随着互联网技术的发展与应用的普及,网络作为信息的载体,已经成为社会大众参与社会生活的一种重要信息渠道。由于互联网是开放的,每个人都可以在网络上...

    myeveryheart 评论0 收藏0
  • Python爬虫 - scrapy - 爬取豆瓣电影TOP250

    摘要:前言新接触爬虫,经过一段时间的实践,写了几个简单爬虫,爬取豆瓣电影的爬虫例子网上有很多,但都很简单,大部分只介绍了请求页面和解析部分,对于新手而言,我希望能够有一个比较全面的实例。 0.前言 新接触爬虫,经过一段时间的实践,写了几个简单爬虫,爬取豆瓣电影的爬虫例子网上有很多,但都很简单,大部分只介绍了请求页面和解析部分,对于新手而言,我希望能够有一个比较全面的实例。所以找了很多实例和文...

    WalkerXu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<