JSON in CSV umwandeln

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Projekt lernst du, wie du JSON-Daten in das CSV-Format mit Python umwandeln kannst. Dies ist eine häufige Aufgabe in der Datenwissenschaft und -entwicklung, da JSON häufig für API-Antworten verwendet wird, während CSV ein beliebtes Format für das Speichern tabellarischer Daten ist.

👀 Vorschau

$ head result.csv
"IP","Status","Zeit","HttpReferer","HttpUserAgent","Anfrage","HttpXForwardedFor","BodyBytesSent","RemoteUser","Anfragegröße"
"72.55.30.187","202","[2016-02-23 16:25:10]","http://www.google.cn/search?q=hive","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0;.NET CLR 2.0.50727)","GET /index.html HTTP/1.1","-","-","-","0"
"55.222.156.202","200","[2016-02-23 16:25:10]","-","Mozilla/4.0 (compatible; MSIE6.0; Windows NT 5.0;.NET CLR 1.1.4322)","GET /login.php HTTP/1.1","-","-","-","0"
"190.215.55.29","201","[2016-02-23 16:25:10]","-","Mozilla/4.0 (compatible; MSIE6.0; Windows NT 5.0;.NET CLR 1.1.4322)","GET /view.php HTTP/1.1","-","-","-","0"
"63.132.98.30","200","[2016-02-23 16:25:10]","-","Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /list.php HTTP/1.1","-","-","-","0"
"214.124.190.132","201","[2016-02-23 16:25:10]","-","Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B511 Safari/9537.53","GET /login.php HTTP/1.1","-","-","-","0"
"98.215.187.30","202","[2016-02-23 16:25:10]","-","Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /upload.php HTTP/1.1","-","-","-","0"
"143.55.168.187","201","[2016-02-23 16:25:10]","-","Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /login.php HTTP/1.1","-","-","-","0"
"98.190.201.29","200","[2016-02-23 16:25:10]","-","Mozilla/5.0 (Linux; Android 4.2.1; Galaxy Nexus Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19","GET /view.php HTTP/1.1","-","-","-","0"
"10.168.55.143","301","[2016-02-23 16:25:10]","http://cn.bing.com/search?q=spark mlib","Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /admin/login.php HTTP/1.1","-","-","-","0"

🎯 Aufgaben

In diesem Projekt wirst du lernen:

  • Wie du JSON-Daten lesen und verstehen kannst
  • Wie du JSON-Daten in eine CSV-Datei umwandeln kannst
  • Wie du die CSV-Datei mit den richtigen Spaltennamen und Formatierung schreibst

🏆 Errungenschaften

Nach Abschluss dieses Projekts wirst du in der Lage sein:

  • JSON-Daten, die von APIs abgerufen werden, effizient in ein strukturiertes CSV-Format umzuwandeln
  • Den Prozess des Parsens von JSON-Daten und das Schreiben in eine CSV-Datei zu verstehen
  • Diese Fähigkeiten auf eine Vielzahl von Datenverarbeitung und -analyseaufgaben anzuwenden

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python(("Python")) -.-> python/FileHandlingGroup(["File Handling"]) python/FileHandlingGroup -.-> python/file_opening_closing("Opening and Closing Files") python/FileHandlingGroup -.-> python/file_reading_writing("Reading and Writing Files") python/FileHandlingGroup -.-> python/file_operations("File Operations") python/FileHandlingGroup -.-> python/with_statement("Using with Statement") python/PythonStandardLibraryGroup -.-> python/data_serialization("Data Serialization") subgraph Lab Skills python/file_opening_closing -.-> lab-302709{{"JSON in CSV umwandeln"}} python/file_reading_writing -.-> lab-302709{{"JSON in CSV umwandeln"}} python/file_operations -.-> lab-302709{{"JSON in CSV umwandeln"}} python/with_statement -.-> lab-302709{{"JSON in CSV umwandeln"}} python/data_serialization -.-> lab-302709{{"JSON in CSV umwandeln"}} end

JSON-Daten lesen und verstehen

In diesem Schritt lernst du, wie du die JSON-Daten aus der Datei web_access.json lesen und verstehen kannst.

  1. Öffne die Datei web_access.json, die sich im Verzeichnis ~/project befindet, mit einem Texteditor.
  2. Untersuch die Inhalte der Datei. Du solltest ein Array von Objekten sehen, wobei jedes Objekt einen Eintrag in einem Web-Zugangsprotokoll darstellt. Jeder Eintrag hat mehrere Eigenschaften, wie "IP", "Status", "Zeit", "HttpReferer", "HttpUserAgent", "Anfrage", "HttpXForwardedFor", "BodyBytesSent", "RemoteUser" und "Anfragegröße".
  3. Vertraut dich mit der Struktur und dem Inhalt der JSON-Daten an. Diese Informationen werden im nächsten Schritt nützlich sein, wenn du die Daten in das CSV-Format umwandelst.

JSON in CSV umwandeln

In diesem Schritt lernst du, wie du die JSON-Daten aus der Datei web_access.json in eine CSV-Datei umwandeln kannst.

  1. Erstelle in dem Verzeichnis ~/project eine neue Python-Datei namens convert.py.
  2. Importiere in der Datei convert.py die erforderlichen Bibliotheken:
import csv
import json
  1. Lies die JSON-Daten aus der Datei web_access.json:
with open("web_access.json", "r") as json_file:
    data = json.load(json_file)
  1. Definiere die Reihenfolge der Spalten in der CSV-Datei:
fieldnames = [
    "IP",
    "Status",
    "Zeit",
    "HttpReferer",
    "HttpUserAgent",
    "Anfrage",
    "HttpXForwardedFor",
    "BodyBytesSent",
    "RemoteUser",
    "Anfragegröße",
]
  1. Öffne in dem Verzeichnis ~/project eine neue CSV-Datei namens result.csv und erstelle ein csv.DictWriter-Objekt:
with open("result.csv", "w", newline="") as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames, quoting=csv.QUOTE_ALL)
  1. Schreibe die Kopfzeile in die CSV-Datei:
writer.writeheader()
  1. Schreibe die Datenzeilen in die CSV-Datei:
for row in data:
    writer.writerow(row)

Deine vollständige convert.py-Datei sollte so aussehen:

import csv
import json

## Lies JSON-Daten aus der Datei
with open("web_access.json", "r") as json_file:
    data = json.load(json_file)

## Definiere die Reihenfolge der Spalten
fieldnames = [
    "IP",
    "Status",
    "Zeit",
    "HttpReferer",
    "HttpUserAgent",
    "Anfrage",
    "HttpXForwardedFor",
    "BodyBytesSent",
    "RemoteUser",
    "Anfragegröße",
]

## Schreibe in die CSV-Datei
with open("result.csv", "w", newline="") as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames, quoting=csv.QUOTE_ALL)

    ## Schreibe die Kopfzeile
    writer.writeheader()

    ## Schreibe die Datenzeilen
    for row in data:
        writer.writerow(row)

Führe das Python-Skript aus

In diesem Schritt wirst du das Skript convert.py ausführen, um die Datei result.csv zu generieren.

  1. Öffne ein Terminal und navigiere zum Verzeichnis ~/project.
  2. Führe das Skript convert.py mit dem folgenden Befehl aus:
python convert.py
  1. Nachdem das Skript abgeschlossen ist, solltest du in dem Verzeichnis ~/project eine neue Datei namens result.csv sehen.
  2. Du kannst die ersten 10 Zeilen der Datei result.csv mit dem folgenden Befehl anzeigen:
head result.csv

Dies sollte die Kopfzeile und die ersten 9 Datenzeilen der CSV-Datei ausgeben.

"IP","Status","Zeit","HttpReferer","HttpUserAgent","Anfrage","HttpXForwardedFor","BodyBytesSent","RemoteUser","Anfragegröße"
"72.55.30.187","202","[2016-02-23 16:25:10]","http://www.google.cn/search?q=hive","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0;.NET CLR 2.0.50727)","GET /index.html HTTP/1.1","-","-","-","0"
"55.222.156.202","200","[2016-02-23 16:25:10]","-","Mozilla/4.0 (compatible; MSIE6.0; Windows NT 5.0;.NET CLR 1.1.4322)","GET /login.php HTTP/1.1","-","-","-","0"
"190.215.55.29","201","[2016-02-23 16:25:10]","-","Mozilla/4.0 (compatible; MSIE6.0; Windows NT 5.0;.NET CLR 1.1.4322)","GET /view.php HTTP/1.1","-","-","-","0"
"63.132.98.30","200","[2016-02-23 16:25:10]","-","Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /list.php HTTP/1.1","-","-","-","0"
"214.124.190.132","201","[2016-02-23 16:25:10]","-","Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B511 Safari/9537.53","GET /login.php HTTP/1.1","-","-","-","0"
"98.215.187.30","202","[2016-02-23 16:25:10]","-","Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /upload.php HTTP/1.1","-","-","-","0"
"143.55.168.187","201","[2016-02-23 16:25:10]","-","Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /login.php HTTP/1.1","-","-","-","0"
"98.190.201.29","200","[2016-02-23 16:25:10]","-","Mozilla/5.0 (Linux; Android 4.2.1; Galaxy Nexus Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19","GET /view.php HTTP/1.1","-","-","-","0"
"10.168.55.143","301","[2016-02-23 16:25:10]","http://cn.bing.com/search?q=spark mlib","Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /admin/login.php HTTP/1.1","-","-","-","0"

Herzlichen Glückwunsch! Du hast die JSON-Daten aus der Datei web_access.json erfolgreich in eine CSV-Datei namens result.csv umgewandelt.

✨ Lösung prüfen und üben

Zusammenfassung

Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Übungen absolvieren, um deine Fähigkeiten zu verbessern.