Python實(shí)現(xiàn)提取JSON數(shù)據(jù)中的鍵值對并保存為.csv文件
在之前的文章Python提取JSON文件中的指定數(shù)據(jù)并保存在CSV或Excel表格文件內(nèi)中,我們就介紹過將JSON文件數(shù)據(jù)保存到.csv格式或.xlsx格式的表格文件中的方法;而本文我們將針對不同的待提取數(shù)據(jù)特征,給出另一種方法。
首先,我們來明確一下具體的需求。我們現(xiàn)有一個(gè)JSON文件數(shù)據(jù),是一個(gè)包含多個(gè)JSON對象的列表,如下圖所示;其中,我們希望將text中的內(nèi)容提取出來——text中的數(shù)據(jù)都是以鍵值對的形式存儲的,我們希望的是,將鍵值對的鍵作為.csv格式文件的列名,而值則是這一列對應(yīng)的值;因?yàn)檫@個(gè)JSON數(shù)據(jù)中包含很多個(gè)text(每一個(gè)text中的所有鍵都是一樣的,但是值不完全一致),所以我們最后就會得到一個(gè)具有很多行的.csv格式文件。

明確了需求,我們就可以開始代碼的撰寫。本文所用代碼如下。
#!/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)其中,我們首先通過import語句導(dǎo)入必要的Python模塊,包括用于處理JSON數(shù)據(jù)的json和用于處理CSV文件的csv。
接下來,我們打開名為single.json的JSON文件并讀取其內(nèi)容,將其存儲在data變量中。json.load(file)用于將JSON文件內(nèi)容加載到Python數(shù)據(jù)結(jié)構(gòu)中。隨后,創(chuàng)建一個(gè)空集合fieldnames,用于存儲將在CSV文件的頭部寫入的列名。
緊接著,我們遍歷data列表中的每個(gè)元素,其中每個(gè)元素是一個(gè)包含JSON格式的字符串的字典。對于每個(gè)元素,將JSON文本——也就是item['text']解析為字典,并獲取該字典中的所有鍵。這些鍵將被添加到fieldnames集合中,以便稍后在CSV文件的頭部(列名稱)使用。
其次,創(chuàng)建一個(gè)CSV文件output.csv以進(jìn)行寫入,使用csv.DictWriter對象初始化,其中指定了要寫入的列名(通過fieldnames變量)。使用writer.writeheader()寫入CSV文件的頭部,這將包含字段名稱。最后,遍歷data列表中的每個(gè)元素,對于每個(gè)元素,將JSON文本解析為字典,并將該字典的數(shù)據(jù)寫入CSV文件中,每行對應(yīng)一個(gè)JSON對象。
執(zhí)行上述代碼,我們即可在指定的結(jié)果.csv格式文件中看到我們轉(zhuǎn)換之后的數(shù)據(jù)結(jié)果;如下圖所示。其中,紫色框內(nèi)部分就是列名,也就是我們提取出來的鍵,而值則是每一行的數(shù)據(jù)。

至此,大功告成。
到此這篇關(guān)于Python實(shí)現(xiàn)提取JSON數(shù)據(jù)中的鍵值對并保存為.csv文件的文章就介紹到這了,更多相關(guān)Python提取json數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python將多個(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

