Python實(shí)現(xiàn)提取JSON數(shù)據(jù)中的鍵值對(duì)并保存為.csv文件
在之前的文章Python提取JSON文件中的指定數(shù)據(jù)并保存在CSV或Excel表格文件內(nèi)中,我們就介紹過(guò)將JSON文件數(shù)據(jù)保存到.csv格式或.xlsx格式的表格文件中的方法;而本文我們將針對(duì)不同的待提取數(shù)據(jù)特征,給出另一種方法。
首先,我們來(lái)明確一下具體的需求。我們現(xiàn)有一個(gè)JSON文件數(shù)據(jù),是一個(gè)包含多個(gè)JSON對(duì)象的列表,如下圖所示;其中,我們希望將text中的內(nèi)容提取出來(lái)——text中的數(shù)據(jù)都是以鍵值對(duì)的形式存儲(chǔ)的,我們希望的是,將鍵值對(duì)的鍵作為.csv格式文件的列名,而值則是這一列對(duì)應(yīng)的值;因?yàn)檫@個(gè)JSON數(shù)據(jù)中包含很多個(gè)text(每一個(gè)text中的所有鍵都是一樣的,但是值不完全一致),所以我們最后就會(huì)得到一個(gè)具有很多行的.csv格式文件。
明確了需求,我們就可以開(kāi)始代碼的撰寫(xiě)。本文所用代碼如下。
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Fri Sep 15 11:12:01 2023 @author: fkxxgis """ import json import csv json_file = "/Users/ddd/Downloads/single.json" with open(json_file, 'r') as file: data = json.load(file) fieldnames = set() for item in data: fieldnames.update(json.loads(item['text']).keys()) csv_filename = "/Users/didi/Downloads/output.csv" with open(csv_filename, 'w', newline='') as csvfile: writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() for item in data: json_string = item['text'] row_data = json.loads(json_string) writer.writerow(row_data)
其中,我們首先通過(guò)import語(yǔ)句導(dǎo)入必要的Python模塊,包括用于處理JSON數(shù)據(jù)的json和用于處理CSV文件的csv。
接下來(lái),我們打開(kāi)名為single.json的JSON文件并讀取其內(nèi)容,將其存儲(chǔ)在data變量中。json.load(file)用于將JSON文件內(nèi)容加載到Python數(shù)據(jù)結(jié)構(gòu)中。隨后,創(chuàng)建一個(gè)空集合fieldnames,用于存儲(chǔ)將在CSV文件的頭部寫(xiě)入的列名。
緊接著,我們遍歷data列表中的每個(gè)元素,其中每個(gè)元素是一個(gè)包含JSON格式的字符串的字典。對(duì)于每個(gè)元素,將JSON文本——也就是item['text']解析為字典,并獲取該字典中的所有鍵。這些鍵將被添加到fieldnames集合中,以便稍后在CSV文件的頭部(列名稱)使用。
其次,創(chuàng)建一個(gè)CSV文件output.csv以進(jìn)行寫(xiě)入,使用csv.DictWriter對(duì)象初始化,其中指定了要寫(xiě)入的列名(通過(guò)fieldnames變量)。使用writer.writeheader()寫(xiě)入CSV文件的頭部,這將包含字段名稱。最后,遍歷data列表中的每個(gè)元素,對(duì)于每個(gè)元素,將JSON文本解析為字典,并將該字典的數(shù)據(jù)寫(xiě)入CSV文件中,每行對(duì)應(yīng)一個(gè)JSON對(duì)象。
執(zhí)行上述代碼,我們即可在指定的結(jié)果.csv格式文件中看到我們轉(zhuǎn)換之后的數(shù)據(jù)結(jié)果;如下圖所示。其中,紫色框內(nèi)部分就是列名,也就是我們提取出來(lái)的鍵,而值則是每一行的數(shù)據(jù)。
至此,大功告成。
到此這篇關(guān)于Python實(shí)現(xiàn)提取JSON數(shù)據(jù)中的鍵值對(duì)并保存為.csv文件的文章就介紹到這了,更多相關(guān)Python提取json數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python使用datetime.utcnow()問(wèn)題解析
這篇文章主要介紹了python使用datetime.utcnow()問(wèn)題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07python mysql中in參數(shù)化說(shuō)明
這篇文章主要介紹了python mysql中in參數(shù)化說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06Python將多個(gè)excel表格合并為一個(gè)表格
這篇文章主要為大家詳細(xì)介紹了Python將多個(gè)excel表格合并為一個(gè)表格的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01一文詳解Python中多進(jìn)程和進(jìn)程池的使用方法
這篇文章將介紹Python中多進(jìn)程和進(jìn)程池的使用方法,并提供一些實(shí)用的案例供大家參考,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-04-04