Die Geschichte, wenn ein Python-Benutzer eine JSON-Datei übergibt

Fringe81 Adventskalender 2019, Artikel zum 12. Tag.

Dieses Mal werde ich eine kleine Geschichte schreiben, die Leute, die nur Python berührt haben (wie ich), in der Praxis brauchen werden. Wie der Titel schon sagt, handelt es sich um eine Geschichte, wenn Daten als JSON-Datei an einen Frontingenieur übergeben werden, nachdem die Daten mit Python komprimiert wurden.

Datenaufbereitung

Zum Beispiel möchte ich einen Bildschirm erstellen, um mich neuen Mitarbeitern vorzustellen! Angenommen, Sie möchten zu diesem Zeitpunkt Daten in der folgenden Form (alle Daten sind wie eine CSV-Datei, daher wird davon ausgegangen, dass sie individuell sind).

interface Member {
    id: string;
    name: string;
    profile: {
        age: number;
        height: number;
        weight: number:
    };
    likes: {
        name: string;
        reason: string;
    }[];
}[];

Ich denke, dass Neulinge, die nur Python verwenden können, dies mit Pandas organisieren und ausgeben können. Bereiten Sie zuerst die Daten vor.

import pandas as pd

#Bei den folgenden Daten wird davon ausgegangen, dass eine separate Datei vorhanden ist, die dem von Pandas gelesenen Status entspricht
df1 = pd.DataFrame(
    {
        "id": ["01", "02", "03"],
        "name": ["Herr A.", "Herr B.", "Herr C."]
    }
)
df2 = pd.DataFrame(
    {
        "id": ["01", "02", "03"],
        "age": [22, 24, 27],
        "height": [177, 171, 167],
        "weight": [64, 57, 62]
    }
)
df3 = pd.DataFrame(
    {
        "id": ["01", "02", "03"],
        "name": ["Sushi / Golf", "Baseball / Kamera", "Ente, Dorfbewohner, Krieger"],
        "reason": ["Weil es köstlich und erfrischend ist", "", ""]
    }
)
df1
</tr>
<tr>
  <th>1</th>
  <td>02</td>

</tr>
<tr>
  <th>2</th>
  <td>03</td>

</tr>
id name
0 01
df2
id age height weight
0 01 22 177 64
1 02 24 171 57
2 03 27 167 62
df3
Der Inhalt der Daten ist so, weil sie süß, nett und cool sind.
id name reason
0 01 A B C Sushi / Golf Weil es köstlich und cool ist
1 02 Baseball / Kamera Weil es aufregend ist und ich es in meinem Gedächtnis behalten möchte
2 03 Ente / Dorfbewohner / Krieger Weil es süß ist, weil es nett ist, weil es cool ist

Datenformung

Als nächstes werden wir die Daten formatieren. Formen Sie es vorerst und kombinieren Sie es zu einem Datenrahmen.

#df2-Formgebung
# "profile"Geben Sie in der Spalte ein, was im Wörterbuch zusammengefasst ist
df2["profile"] = df2.apply(lambda row: {"age": row["age"], "height": row["height"], "weight": row["weight"]}, axis=1)
df2 = df2[["id", "profile"]]

#df3-formung
#Teilen Sie den durch "・" getrennten Text und fügen Sie ihn in einen Listentyp ein
# "likes"Geben Sie in der Spalte ein, was im Wörterbuch zusammengefasst ist
df3["name"] = df3["name"].str.split("・")
df3["reason"] = df3["reason"].str.split("・")
df3["likes"] = df3.apply(lambda row: [{"name": name, "reason": reason} for name, reason in zip(row["name"], row["reason"])], axis=1)
df3 = df3[["id", "likes"]]

#Daten kombinieren
df = df1.merge(df2, on="id").merge(df3, on="id")

Der Inhalt ist so.

df
id name profile likes
0 01 Herr A {'age': 22, 'height': 177, 'weight': 64} [{'name': 'sushi', 'reason': 'weil es köstlich ist'}, {'name': '...
1 02 Herr B {'age': 24, 'height': 171, 'weight': 57} [{'Name': 'Baseball', 'Grund': 'Weil es aufgeregt wird'}, {'Name': ...
2 03 Herr C {'age': 27, 'height': 167, 'weight': 62} [{'name': 'duck', 'reason': 'weil es süß ist'}, {'name': ...

Datenausgabe

Zum Schluss schreiben Sie die Daten in eine JSON-Datei.

import json

#Erstellen Sie ein Diktat für die Ausgabe
#orient ist so eingestellt, dass die verschachtelte Struktur in der Liste so gespeichert werden kann, wie sie ist (das Argument hier ist wichtig).
output = df.to_dict(orient="records")

#Öffnen Sie die Speicherzieldatei und geben Sie die Daten ein.
with open("introduction.json", "w") as f:
    #Einzug wird so eingestellt, dass der Inhalt der Datei leicht zu sehen ist
    # ensure_ascii soll verstümmelte japanische Schriftzeichen verhindern
    json.dump(output, f, indent=4, ensure_ascii=False)

Der Inhalt sollte übrigens so aussehen.

output
[{'id': '01',

'name': 'Mr. A', 'profile': {'age': 22, 'height': 177, 'weight': 64}, 'mag': [{'name': 'sushi', 'grund': 'weil es lecker ist'}, {'name': 'Golf', 'reason': 'Weil ich verrückt bin'}]}, {'id': '02', 'Name': 'Herr B', 'profile': {'age': 24, 'height': 171, 'weight': 57}, 'mag': [{'name': 'baseball', 'grund': 'weil es aufgeregt wird'}, {'name': 'camera', 'reason': 'weil ich mich erinnern möchte'}]}, {'id': '03', 'Name': 'C-san', 'profile': {'age': 27, 'height': 167, 'weight': 62}, 'mag': [{'name': 'duck', 'reason': 'weil es süß ist'}, {'Name': 'Dorfbewohner', 'Grund': 'Weil es nett ist'}, {'name': 'krieger', 'grund': 'weil es cool ist'}]}]

das ist alles. Abgesehen davon ist es vielleicht einfacher, nur den Diktattyp zusammenzustellen, aber dieses Mal habe ich eine Methode geschrieben, um das, was im Pandas-Datenrahmen gelesen wurde, so zu konvertieren, wie es ist.

Schließlich

Vielen Dank für das Lesen bis zum Ende. Das nächste Mal ist Designer mirinrin! Bitte genießen Sie weiterhin den Fringe 81 Adventskalender 2019.

Recommended Posts

Die Geschichte, wenn ein Python-Benutzer eine JSON-Datei übergibt
So erstellen Sie eine JSON-Datei in Python
Analysieren Sie eine JSON-Zeichenfolge, die in eine Datei in Python geschrieben wurde
Python-Skript, das eine JSON-Datei aus einer CSV-Datei erstellt
Ich habe ein Skript in Python erstellt, um eine Textdatei für JSON zu konvertieren (für das vscode-Benutzer-Snippet).
Erstellen Sie eine Binärdatei in Python
Vorsichtsmaßnahmen beim Erstellen eines Python-Generators
Beim Schreiben eines Programms in Python
[Python, Selenium, PhantomJS] Eine Geschichte beim Scrapen einer Website mit fauler Last
Erstellen einer einfachen Power-Datei mit Python
Python #JSON
Erstellen Sie eine Deb-Datei aus einem Python-Paket
[GPS] Erstellen Sie eine kml-Datei mit Python
Eine Geschichte über Python Pop und Append
Die Geschichte der Verarbeitung A von Blackjack (Python)
Ich habe mit Python eine Einstellungsdatei erstellt
Das Ausgabe-Timing ist falsch, wenn die Standardausgabe (Fehlerausgabe) in eine Datei in Python konvertiert wird
Eine Geschichte, der ich nach der SFTP-Kommunikation mit Python verfallen war
Fehler beim Installieren eines Moduls mit Python pip
Eine süchtig machende Geschichte bei der Verwendung von Tensorflow unter Android
Lesen einer CSV-Datei mit Python 2/3
Erstellen Sie eine GIF-Datei mit Pillow in Python
Lesen Sie eine Datei mit verstümmelten Linien in Python
[Python3] Eine Geschichte, die bei der Zeitzonenkonvertierung steckt
Python-Variablenargument Ein Memorandum beim Erben einer definierten Klasse
So generieren Sie ein Python-Objekt aus JSON
Eine Geschichte über den Umgang mit Binärdaten in Python
Python Hinweis: Wenn Sie einer Zeichenfolge einen Wert zuweisen
Ich habe versucht, eine CSV-Datei mit Python zu lesen
Ein Memo beim Erstellen einer Python-Umgebung mit Miniconda
Exportieren Sie PythonC Version OpenCV KeyPoint in eine Datei
Erstellen Sie eine MIDI-Datei in Python mit pretty_midi
Eine Geschichte über das Ändern von Python und das Hinzufügen von Funktionen
Lesen Sie mit Python Zeile für Zeile aus der Datei
Ich möchte mit Python in eine Datei schreiben
Dateidialog mit Python-GUI öffnen (tkinter.filedialog)
Skript-Python-Datei
Eine Geschichte, die praktisch war, als ich versuchte, das Python-IP-Adressmodul zu verwenden
Eine Geschichte, die beim Versuch, die Python-Version mit GCE zu aktualisieren, hängen blieb
Python-Dateiverarbeitung
Beim Schreiben in eine CSV-Datei mit Python habe ich einen kleinen Fehler gemacht und den Liefertermin nicht eingehalten
Erstellen Sie eine Kopie einer Google Drive-Datei aus Python
Ich habe versucht, Python aus einer Bat-Datei auszuführen
Ein Memorandum beim Schreiben von experimentellem Code ~ Anmelden in Python
Was tun, wenn gdal_merge eine große Datei generiert?
Ein Memorandum zum Ausführen eines Python-Skripts in einer Bat-Datei
Ich möchte eine Datei mit Python zufällig testen
Probleme beim Erstellen eines CSV-JSON-Konvertierungstools mit Python
Eine Geschichte über das Ausprobieren eines (Golang +) Python-Monorepo mit Bazel
So konvertieren Sie eine JSON-Datei mit Python Pandas in eine CSV-Datei
Beachten Sie beim Initialisieren einer Liste in Python
Was ist in dieser Variablen (wenn das Python-Skript ausgeführt wird)?
Lesen Sie die json-Datei mit Python, formatieren Sie sie und geben Sie json aus
Verwenden Sie communic (), wenn Sie eine Ausgabe in einem Python-Unterprozess empfangen