Konvertieren Sie Excel-Daten mit Python in JSON

Überblick

Konvertieren Sie Excel-Daten mit Python in JSON.

Die zu konvertierenden Excel-Daten stammen aus der Japanese Food Standard Ingredients Table. Ich möchte die folgende Frucht-Excel-Datei verwenden. (Klicken Sie hier, um die Datei herunterzuladen.) https://www.mext.go.jp/component/a_menu/science/detail/__icsFiles/afieldfile/2016/01/15/1365344_1-0207r.xlsx

Ich werde zwei Methoden ausprobieren, "excel2json" und "openpyxl". (Excel2json funktioniert nicht gut.)

Methode 1 Verwenden Sie excel2json

excel2json ist ein Modul, das Excel-Daten mit Python in JSON konvertiert, dessen Funktionen jedoch sehr eingeschränkt sind. Sie haben keine andere Wahl, als Excel zu lesen und eine JSON-Datei zu erstellen.

Ich werde es vorerst installieren. Beachten Sie, dass ein anderes Modul installiert wird, wenn Sie das nachfolgende -3 nicht eingeben.

$ pip install excel2json-3

Lassen Sie es uns verwenden, sobald es installiert ist. Dies ist der einzige Code

excel2json.py


from excel2json import convert_from_file

convert_from_file("PFAD der Excel-Datei, die Sie konvertieren möchten")

Bei der Ausführung wird eine JSON-Datei im selben Verzeichnis wie die Excel-Datei generiert. Der Name der JSON-Datei ist der Name der Excel-Tabelle (fest).

Wenn ich die heruntergeladene Excel-Datei so wie sie ist ablege und ausführe, konnte die JSON-Datei nicht erfolgreich erstellt werden. Löschen Sie daher den zusätzlichen Teil in der Tabelle und versuchen Sie es erneut.

Die geänderte Excel-Datei sieht folgendermaßen aus ↓ image.png

Wenn ich die erstellte JSON-Datei öffne und sehe ...

{
    "\u98df\u54c1\u7fa4": "07",
    "\u98df\u54c1\u756a\u53f7": "07001",
    "\u7d22\u5f15\u756a\u53f7": 751.0,
    ...
}

Es ist so ein Unicode geworden. Als ich versuchte, es mit der Erweiterung "encode decode" von vscode zu beheben, wurde es so.

{
    "Essen Gruppe": "07",
    "Nahrungsmittelnummer": "07001",
    "Indexnummer": 751.0,
    ...
}

Wenn die Codemenge gering ist und die Daten bereits vorhanden sind, kann dies sehr einfach durchgeführt werden. Dies ist jedoch etwas unpraktisch, da Sie die zu erfassenden Daten nicht angeben können. Was den Zeichencode betrifft, konnte ich keine andere Methode als die oben genannte finden, daher werde ich vorerst andere Methoden ausprobieren.

Methode 2 Verwenden Sie openpyxl

openpyxl ist ein Modul zum Betreiben von Excel in Python. Installieren Sie zuerst openpyxl

$ pip install openpyxl

Ich werde versuchen, es zu verwenden, sobald es installiert ist.

Bitte beachten Sie, dass die Excel-Datei mit der heruntergeladenen identisch ist. Dieses Mal erwerben wir 7 Artikel: Nahrungsmittelnummer, Nahrungsname, Ballaststoffe, Kalium, Eisen, Vitamin B1 und Vitamin C.

Klicken Sie hier, um den Code
anzuzeigen
import openpyxl
import json

load_book = openpyxl.load_workbook('Excel-Datei PATH')
sheet = load_book['07 Früchte']
json_path = 'JSON-Datei PFAD'

fruits_list = [{
    "food_id": 0,
    "name": ""
}]
for i in range(9, 183):
    food_id = sheet.cell(row = i, column = 2).value
    name = sheet.cell(row = i, column = 4).value
    dietary_fiber = sheet.cell(row = i, column = 21).value
    potassium = sheet.cell(row = i, column = 24).value
    iron = sheet.cell(row = i, column = 28).value
    vitamin_b1 = sheet.cell(row = i, column = 48).value
    vitamin_c = sheet.cell(row = i, column = 56).value

    food_id = int(food_id)

    if dietary_fiber == 'Tr':
        dietary_fiber = 0
    if potassium == 'Tr':
        potassium = 0
    if iron == 'Tr':
        iron = 0
    if vitamin_b1 == 'Tr':
        vitamin_b1 = 0
    if vitamin_c == 'Tr':
        vitamin_c = 0

    if name.split(" ")[0][0] == '(' or name.split(" ")[0][0] == '(':
        name = name.split(" ")[1]
    else:
        name = name.split(" ")[0]
    
    if fruits_list[-1]['name'] != name:
        fruits_list.append({
            "food_id": food_id,
            "name": name,
            "dietary_fiber": dietary_fiber,
            "potassium": potassium,
            "iron": iron,
            "vitamin_b1": vitamin_b1,
            "vitamin_c": vitamin_c,
        })
    
fruits_list.pop(0)

data_dict = {
    "data": "fruits",
    "fruits": fruits_list
}

with open(json_path, mode = 'w', encoding = 'utf-8') as f:
    f.write(json.dumps(data_dict, ensure_ascii = False, indent = 4))

Ich werde den Teil erklären, der sich auf den Artikel bezieht.

import openpyxl
import json

load_book = openpyxl.load_workbook('Excel-Datei PATH')
sheet = load_book['Blattname']
json_path = 'JSON-Datei PFAD'

Da ich openpyxl und json betreiben möchte, importiere ich auch das json-Modul. Lesen Sie die Excel-Datei mit "openpyxl.load_workbook ()" und erhalten Sie das Blatt mit "load_book ['sheet name']".

food_id = sheet.cell(row = 1, column = 2).value

Rufen Sie die Daten ab, indem Sie die Excel-Zellen in Zeilen und Spalten angeben. Mit diesem Code erhalten wir 1 Zeile und 2 Spalten mit Daten.

fruits_list.append({
    "food_id": food_id,
    "name": name,
    "dietary_fiber": dietary_fiber,
    "potassium": potassium,
    "iron": iron,
    "vitamin_b1": vitamin_b1,
    "vitamin_c": vitamin_c,
})

Sammeln Sie die erfassten Daten in einem Wörterbuch und fügen Sie sie dem Array hinzu.

data_dict = {
    "data": "fruits",
    "fruits": fruits_list
}

with open(json_path, mode = 'w', encoding = 'utf-8') as f:
    f.write(json.dumps(data_dict, ensure_ascii = False, indent = 4))

Konvertieren Sie schließlich die vorherigen Daten in ein Wörterbuch und schreiben Sie sie in die JSON-Datei. mode = 'a' in open () gibt an, dass die Datei im Schreibmodus geöffnet werden soll. Übrigens, wenn "mode" "r" ist, befindet es sich im Lesemodus, und wenn es "a" ist, befindet es sich im Append-Modus.

Zusammenfassung

Recommended Posts

Konvertieren Sie Excel-Daten mit Python in JSON
Konvertieren Sie json in Excel
Lesen von JSON-Daten mit Python
So konvertieren Sie eine JSON-Datei mit Python Pandas in eine CSV-Datei
Konvertieren Sie die Liste mit Python in DataFrame
Excel mit Python
Konvertieren Sie Memos sofort mit Python 2to3
Konvertiere Hiragana mit Python (Beta) in Romaji
Konvertieren Sie ein Array (struct) mit golang in json
Konvertieren Sie chinesische Zahlen mit Python in arabische Zahlen
Beispiel für die Wavelet-Konvertierung von Bildern in Python
Datenanalyse mit Python 2
[Python] Verwenden Sie JSON mit Python
Konvertieren Sie 202003 bis 2020-03 mit Pandas
Behandle Excel mit Python
Datenanalyse mit Python
Betreiben Sie Excel mit Python (1)
Betreiben Sie Excel mit Python (2)
Konvertieren Sie Daten mit Form (Anzahl der Daten, 1) in (Anzahl der Daten,) mit numpy.
Konvertieren Sie PDF in Bilder (JPEG / PNG) mit Python
Konvertieren Sie die "Anzahl" des Excel-Datums in die Python-Datumszeit
Konvertieren Sie PDFs mit Python in Massenbilder
[Python] Wie man Excel-Dateien mit Pandas liest
Konvertieren Sie die SVG-Datei mit Python in png / ico
Konvertieren Sie Windows-Epochenwerte mit Python in das Datum
Ich habe versucht, CloudWatch-Daten mit Python abzurufen
[Einführung in Python] Umgang mit Daten im JSON-Format
Schreiben Sie CSV-Daten mit AWS-Lambda + Python in AWS-S3
Stapelkonvertierung von Excel-Dateien in JSON [Python]
Konvertieren Sie Daten im JSON-Format in txt (mit yolo)
Konvertieren Sie die Zeichenfolge mit Python in ein zeichenweises Listenformat
Mit Python erstellte Beispieldaten
Stellen Sie mit Python eine Verbindung zu BigQuery her
So konvertieren / wiederherstellen Sie einen String mit [] in Python
Ich konvertiere AWS JSON-Daten wie folgt in CSV
Zeichnen Sie Excel-Daten mit matplotlib (1)
[Python] Datum in Zeichenfolge konvertieren
Konvertieren Sie numpy int64 in python int
[Python] Liste in Pandas konvertieren [Pandas]
So kratzen Sie Bilddaten von Flickr mit Python
POST json mit Python 3-Skript
Holen Sie sich Youtube-Daten mit Python
Konvertieren Sie CSV- und TsV-Daten in eine Matrix mit Python als Beispiel für MovieLens
Post to Slack mit Python 3
Lesehinweis: Einführung in die Datenanalyse mit Python
Konvertieren Sie das Bild in .zip mit Python in PDF
Zeichnen Sie Excel-Daten mit matplotlib (2)
Konvertieren Sie das Scratch-Projekt in Python
[Python] Konvertieren Sie Shift_JIS in UTF-8
PyInstaller-Memorandum Konvertieren Sie Python [.py] in [.exe] mit 2 Zeilen
Konvertieren / Zurückgeben von Klassenobjekten in das JSON-Format in Python
Schalten Sie Python mit Alternativen auf 2.7 um
Schreiben Sie mit Python in csv
So konvertieren Sie Json-Dateien in das CSV- oder EXCEL-Format
Formatieren Sie json mit Vim (mit Python)
Konvertieren Sie Python 3.x-Code in Python 2.x.