Python全面解析json數(shù)據(jù)并保存為csv文件
解析json數(shù)據(jù)并保存為csv文件
首先導(dǎo)入兩個包:
import json import pandas as pd
打開json 文件并讀?。?/p>
with open('2.json', encoding='utf-8') as f: ? ? line = f.readline() ? ? d = json.loads(line) ? ? f.close()
讀取的json數(shù)據(jù)會以字典的形勢保存,按照字典的讀取方式獲取自己想要的數(shù)據(jù):
datas_x = [] datas_y = [] for dss in d: ? ? datas_x.append(float(dss["pos"]["x"])) ? ? datas_y.append(float(dss["pos"]["z"]))
將數(shù)據(jù)保存到列表中,然后創(chuàng)建pandas的DataFrame,DataFrame是由多種類型的列構(gòu)成的二維標簽數(shù)據(jù)結(jié)構(gòu)。
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
最后將數(shù)據(jù)保存到csv中。
filepath = "E:\\python\\python\\2021\\202104\\0409\\path_data.csv" path_df.to_csv(filepath, index=False, header=False)
完整代碼
import json import pandas as pd filepath = "E:\\python\\python\\2021\\202104\\0409\\path_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任意行文件轉(zhuǎn)為csv文件并保存
將json格式的前3000條數(shù)據(jù)存入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": "屯溪區(qū)", "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": "金城鎮(zhèn) 珠山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轉(zhuǎn)為csv
import csv import json import codecs ''' 將json文件格式轉(zhuǎn)為csv文件格式并保存。 ''' class Json_Csv(): #初始化方法,創(chuàng)建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() #寫完就關(guān)閉 if __name__=='__main__': json_csv=Json_Csv() path='D:/hotels.txt' json_csv.trans(path)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python3編程實現(xiàn)獲取阿里云ECS實例及監(jiān)控的方法
這篇文章主要介紹了Python3編程實現(xiàn)獲取阿里云ECS實例及監(jiān)控的方法,涉及Python URL登陸及請求處理相關(guān)操作技巧,需要的朋友可以參考下2017-08-08基于OpenCV(python)的實現(xiàn)文本分割之垂直投影法
本文主要介紹了基于OpenCV(python)的實現(xiàn)文本分割之垂直投影法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08