Python は、JSON ファイルから指定されたデータを抽出し、CSV または Excel テーブル ファイルに保存します。

この記事では、 Python言語  をベースにして、 JSON形式のデータを読み取り、指定された内容を抽出し、抽出されたデータを.csv形式ファイルまたは.xlsxテーブル ファイルに保存する方法を紹介します。

  JSON形式のデータはデータ情報交換の過程でよく使われますが、比較的直感的ではないため、JSON形式のデータをExcelのテーブルファイルデータに変換したい場合がありますので、ここではPython言語をベースにしたJSONデータの変換方法を紹介します。データの.csv書式設定と書式設定に使用します.xlsx

  まず、私たちのニーズを見てみましょう。Postmanソフトウェアをベースに、ある Web サイトからJSON形式で記録された大量のデータを取得しました。そのデータの一部を下図に示します (1多数のデータ サンプルのサンプルです)。Postmanが Web サイトのデータを取得する方法は次のとおりです。必要に応じて、「Postman ソフトウェアの基本的な使用方法」の記事を参照してください。ブラウザはリクエスト情報をコピーし、それをソフトウェアにインポートして、リクエストをテストして送信します ( https:/ /blog.csdn.net/zhebushibiaoshifu/article /details/132383361)。

  ここで実現したいのは、上記のJSONデータのテキスト部分 (つまり、貴重な情報部分) を抽出してExcelテーブル ファイルに保存することです。ここで、異なるは異なる情報属性、異なるは異なるサンプルです。

  要件が明確になったら、コードの作成を開始できます。この記事のコードではPythonライブラリを使用する必要があることに注意jsonしてください。このライブラリの構成については、Mac システム Anaconda 環境構成 Python json ライブラリ(https://blog.csdn. net/zhebusbiaoshifu/article/details/132565661)。

  まず、JSON形式のデータをファイルデータに変換するコード.csvを以下に紹介します。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Aug 29 10:22:23 2023

@author: fkxxgis
"""

import json
import csv

with open('/Users/didi/Documents/response.json', 'r') as f:
    data = json.load(f)

with open('/Users/didi/Documents/Data_All.csv', 'w', newline='', encoding='utf-8') as csvfile:
    csvwriter = csv.writer(csvfile)
    
    header = ["xkzh", "qymc", "gmpZsh", "cym", "shren", "shrq"]
    csvwriter.writerow(header)
    
    for row in data['rows']:
        xkzh = row['xkzh']
        qymc = row['qymc']
        gmpZsh = row['gmpZsh']
        cym = row['cym']
        shren = row['shren']
        shrq = row['shrq']
        
        csvwriter.writerow([xkzh, qymc, gmpZsh, cym, shren, shrq])

  まず、上記のコードを実行した後、新しく作成した.csvフォーマットファイルを開くと、下図のように漢字が文字化けしてしまうことを説明する必要があります。

  ただし、以下の記事でフォーマットファイルにエクスポートしたコードを使用すると.xlsxこの問題は発生しないため、文字化けが発生する原因についてはこれ以上調査せず、以降のコードをそのまま使用しました。興味があれば、上記のコードをさらに詳しく調べてみてください。

  上記コードの具体的な意味は以下の通りです。まず、という名前のファイル (つまり、 JSON形式のデータを保存するファイル)with open('/Users/didi/Documents/response.json', 'r') as f:を開き、それを変数に割り当てます。これは、ファイルを読み取り専用モードで開くことを意味します。次に、コードは関数を使用してJSONファイルからデータをロードし、それを変数に保存しますresponse.jsonf'r'data = json.load(f)json.load()data

  次に、Data_All.csvという名前のファイルを開き、それを変数に割り当てますcsvfile'w'ファイルが書き込みモードで開かれていることを示します。ファイルを書き込むときに改行とエンコーディングを設定するために使用されnewline=''ます。続いて、ファイルにデータを書き込むためのライターを作成することになります。encoding='utf-8'.csvcsvwriter = csv.writer(csvfile).csvcsvfile

.csv次に、ファイルのヘッダー (列名) を  定義し、それをheaderリスト形式で変数に保存し、csvwriter.writerow(header)ヘッダーを.csvファイルに書き込みます。

  その直後、dataデータの各行に対して次の操作を実行します。xkzh = row['xkzh']これはxkzh、現在の行の辞書から key の値を抽出し、それを変数に割り当てることを意味しますxkzh。以下の他の行も同じ意味を持ちます。.csv最後に、抽出したデータをリストの形式でファイルの 1 行に書き込みます。

次に、 JSON形式のデータをファイルデータに変換する  コードを.xlsx以下に紹介します。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Aug 29 10:42:26 2023

@author: fkxxgis
"""

import json
from openpyxl import Workbook

with open('/Users/didi/Documents/Veterinary/response_2.json', 'r') as f:
    data = json.load(f)

wb = Workbook()
ws = wb.active

header = ["qymc", "tym", "gg", "spm", "pzwh", "zxbz", "pzrq", "yxq", "sxyy", "bgqk"]
ws.append(header)

for row in data['rows']:
    qymc = row['qymc']
    tym = row['tym']
    gg = row['gg']
    spm = row['spm']
    pzwh = row['pzwh']
    zxbz = row['zxbz']
    pzrq = row['pzrq']
    yxq = row['yxq']
    sxyy = row['sxyy']
    bgqk = row['bgqk']
    
    ws.append([qymc, tym, gg, spm, pzwh, zxbz, pzrq, yxq, sxyy, bgqk])

wb.save('/Users/didi/Documents/Veterinary/Result_2.xlsx')

  上記のコードの意味も比較的単純です。

  まず、 という名前のファイルを開きresponse_2.json、それを変数に割り当てますf'r'ファイルが読み取り専用モードで開かれていることを示します。後続のdata = json.load(f)表現では、json.load()関数を使用してJSONファイルからデータをロードし、それを変数に格納しますdata

  次に、新しいExcelワークブックを作成して変数 に割り当てwb、次にワークブックのアクティブなワークシートを取得して変数 に割り当てますws

次に、 Excelファイルのヘッダー(列名)  を定義し、リスト形式で変数に格納し、 Excelファイルの1行目headerにヘッダーを書き込みます。次に、(各行が辞書であると仮定して) データの各行に対して、次の操作を実行します。現在の行の辞書から特定のフィールドの値を抽出し、対応する変数に割り当てます。次に、抽出したデータをExcelファイルの 1 行にリスト形式で書き込みます。data

  最後に、ExcelResult_2.xlsxワークブックを名前を付けてファイルとして保存できます。

  上記のコードを実行すると、Result_2.xlsxファイル内の抽出されたデータが表示されます。各行はサンプル、各列は属性を表しており、文字化けしたコードはありません。以下に示すように。

  この時点で、作業は完了です。

フォロー歓迎: Crazy Learning GIS

おすすめ

転載: blog.csdn.net/zhebushibiaoshifu/article/details/132572161