Python全面解析json數(shù)據(jù)并保存為csv文件
解析json數(shù)據(jù)并保存為csv文件
首先導(dǎo)入兩個(gè)包:
import json import pandas as pd
打開(kāi)json 文件并讀取:
with open('2.json', encoding='utf-8') as f: ? ? line = f.readline() ? ? d = json.loads(line) ? ? f.close()
讀取的json數(shù)據(jù)會(huì)以字典的形勢(shì)保存,按照字典的讀取方式獲取自己想要的數(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是由多種類(lèi)型的列構(gòu)成的二維標(biāo)簽數(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格式類(lèi)型:
{"address": "華山路31號(hào)", "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": "黃山國(guó)際大酒店", "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號(hào)", "addressExtend": "", "amenities": null, "brandName": null, "businessZoneList": [{"businessZoneId": 2384, "businessZoneName": "金門(mén)機(jī)場(chǎng)", "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": "金門(mén)珠山82號(hào)民宿", "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行寫(xiě)入csv文件 。要是想寫(xiě)入全部,則去掉判斷。 if flag: #截?cái)嗟谝恍挟?dāng)做head keys=list(data.keys()) #將得到的keys用列表的形式封裝好,才能寫(xiě)入csv self.write_csv.writerow(keys) flag=False #釋放 value=list(data.values()) #寫(xiě)入values,也要是列表形式 self.write_csv.writerow(value) self.save_csv.close() #寫(xiě)完就關(guān)閉 if __name__=='__main__': json_csv=Json_Csv() path='D:/hotels.txt' json_csv.trans(path)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python3編程實(shí)現(xiàn)獲取阿里云ECS實(shí)例及監(jiān)控的方法
這篇文章主要介紹了Python3編程實(shí)現(xiàn)獲取阿里云ECS實(shí)例及監(jiān)控的方法,涉及Python URL登陸及請(qǐng)求處理相關(guān)操作技巧,需要的朋友可以參考下2017-08-08論文查重python文本相似性計(jì)算simhash源碼
這篇文章主要為大家介紹了python文本相似性計(jì)算simhash源碼來(lái)實(shí)現(xiàn)論文的查重,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02python自動(dòng)重試第三方包retrying模塊的方法
retrying是一個(gè)python的重試包,可以用來(lái)自動(dòng)重試一些可能運(yùn)行失敗的程序段。這篇文章主要介紹了python自動(dòng)重試第三方包retrying的方法,需要的朋友參考下吧2018-04-04Django項(xiàng)目單字段區(qū)間查詢(xún)的實(shí)現(xiàn)
在Django項(xiàng)目中會(huì)碰到一些需求就是查詢(xún)某個(gè)表中的一些字段從某日到某日的數(shù)據(jù),你可以像在SQL中那樣使用SELECT語(yǔ)句來(lái)查找指定字段,本文就來(lái)介紹兩種方法,感興趣的可以了解一下2023-10-10基于OpenCV(python)的實(shí)現(xiàn)文本分割之垂直投影法
本文主要介紹了基于OpenCV(python)的實(shí)現(xiàn)文本分割之垂直投影法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08Python實(shí)現(xiàn)購(gòu)物車(chē)購(gòu)物小程序
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)購(gòu)物車(chē)購(gòu)物小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04Python利用AI接口實(shí)現(xiàn)摳圖并改圖片底色
時(shí)候我們的證件照需要換底色,又來(lái)不及去照相館拍照,用ps也不好摳圖,所以今天給你們分享一下如何用python來(lái)?yè)笀D,并換底色,需要的可以參考一下2022-09-09pyqt5 實(shí)現(xiàn)工具欄文字圖片同時(shí)顯示
今天小編就為大家分享一篇pyqt5 實(shí)現(xiàn)工具欄文字圖片同時(shí)顯示的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06