Fragen Sie sich, wie man JSON in Python analysiert? Damit sind Sie nicht allein. Mit dieser Anleitung wird das Lesen, Schreiben und Analysieren von Code zum Kinderspiel.
In dieser Kurzanleitung gehen wir auf die Grundlagen des Parsens in Python ein, erklären, was JSON ist, und zeigen Ihnen, wie Sie beides nutzen können, um die benötigten Daten zu erhalten.
Was ist Parsing?
Unter „Parsing“ versteht man den Vorgang, bei dem eine Zeichenfolge in einen abstrakten Syntaxbaum umgewandelt wird. Der Parser nutzt diesen Baum anschließend, um verschiedene Operationen an der Eingabe durchzuführen, beispielsweise die Überprüfung der syntaktischen Korrektheit oder die Feststellung, ob die Eingabe Fehler enthält.
Die gängigste Art von Parser wird als „Lexer“ bezeichnet; dieser wandelt Zeichenfolgen in Token (oder „Lexeme“) um. Ein Token kann alles sein, was in Ihrer Sprache eine Bedeutung hat: Es kann sich um einen Bezeichner, eine Literalzeichenfolge wie „Hallo“ oder sogar um etwas Komplexeres wie einen Funktionsaufruf handeln.
Nachdem Sie alle Lexeme in Tokens umgewandelt haben, müssen Sie entscheiden, was mit ihnen geschehen soll, sobald Ihr Programm sie verarbeitet hat. Diese Entscheidung hängt davon ab, wie Ihre Sprache funktioniert. Einige Sprachen kennen kein Funktionskonzept; andere nutzen möglicherweise Rekursion und Funktionen höherer Ordnung; wieder andere verwenden möglicherweise Closures oder anonyme Namespaces usw.
Sie sollten außerdem sicherstellen, dass jedes Token nicht mehr als ein Zeichen enthält, damit Sie beim Parsen nicht versehentlich Endlosschleifen erzeugen.
Was ist JSON?
JavaScript Object Notation ist ein schlankes Datenaustauschformat, das Objekte – mittels Attribut-Wert-Paaren – zur Datenspeicherung oder zum Datentransport beschreibt. Nehmen wir beispielsweise an, Sie haben ein Glossar auf Ihrer Website. JSON verwendet eine Zeichenkette, um dieses zu definieren. „title“ : „Beispiel-Glossar“
Welche Haupttypen von JSON-Dateien gibt es?
Es gibt zwei Haupttypen von JSON-Dateien: Objekte und Arrays. Ein Objekt ist eine einfache Möglichkeit, beliebige Daten zu speichern, während ein Array zur Speicherung von Objekten dient, die wiederum andere Objekte enthalten.
Welche Vorteile bietet die Verwendung von JSON?
Der Hauptvorteil der Verwendung von JSON gegenüber XML oder anderen Formaten wie CSV oder HTML besteht darin, dass Sie sich in Ihrer Anwendung keine Gedanken über speziellen Parsing-Code machen müssen. Bei der Verwendung von JSON müssen Sie die Datei mit Ihren Daten an der richtigen Stelle auf Ihrer Seite einbinden und die Daten dann von dort aus einlesen. Das bedeutet: Unabhängig davon, welches Gerät jemand zum Aufrufen Ihrer Website verwendet – er erhält stets genau das, was Sie beabsichtigen.
Was ist Python?
Python ist eine universell einsetzbare Programmiersprache, die Sie für viele verschiedene Arten von Projekten verwenden können. Sie ist leicht zu erlernen und verfügt über eine Vielzahl von Bibliotheken, die Ihnen die Arbeit erleichtern.
Python verfügt zudem über eine aktive Community, was bedeutet, dass es im Internet zahlreiche Ressourcen gibt, die Ihnen den Einstieg erleichtern.
Was ist eine Zeichenfolge?
Eine Zeichenkette ist eine Folge von Zeichen. Zeichen sind Symbole, wie beispielsweise Buchstaben oder Zahlen. Technisch gesehen ist dieser Satz also eine Zeichenkette.
Computer lesen jedoch keine Zeichen oder Symbole. Sie lesen lediglich Einsen und Nullen – ein und aus, entweder oder; mit anderen Worten: binär.
Auch wenn Sie Zeichen auf dem Computerbildschirm sehen – hinter den Kulissen – wandeln Computer diese Zeichen in 1en und 0en um bzw. kodieren sie. Der umgekehrte Vorgang (von Binärzahlen zu Zeichen) wird als Dekodierung bezeichnet.
Einfach ausgedrückt ist eine Python-Zeichenkette eine Folge von Zeichen, die von Menschen eingegebene Befehle in die binäre Sprache umwandelt, die Computer verstehen.
Was sind Module in Python?
Module gliedern große Programme in kleine, überschaubare und strukturierte Dateien auf. In Python bezeichnet man damit Dateien, die Python-Anweisungen und -Definitionen enthalten. Eine Datei mit Python-Code, wie beispielsweise „example.py“, ist ein Modul. Der Name dieses Moduls lautet „example“.
So analysieren Sie JSON in Python.
Sie können das JSON-Modul von Python verwenden, um mit JSON zu arbeiten (sei es als Zeichenfolge oder als Datei, die ein JSON-Objekt enthält). Es ist ratsam, das Modul vor der Verwendung zu importieren.
JSON importieren
Das JSON-Modul erleichtert das Parsen von JSON-Zeichenketten und Dateien, die JSON-Objekte enthalten.
Es gibt viele Möglichkeiten, dieselben Informationen aus einer Zeichenfolge zu extrahieren, die im JSON-Objektformat (oder einem anderen Format) formatiert ist.
Am einfachsten ist es, die integrierte Funktion „json“ zu verwenden. Diese akzeptiert einen optionalen Parameter namens „indent“, der festlegt, wie stark die Eingabedaten beim Parsen eingerückt werden sollen.
Ist der Wert „None“, erfolgt keine Einrückung. Andernfalls wird vor jeder neuen Codezeile mindestens ein Leerzeichen eingefügt.
Dieser Ansatz eignet sich gut für einfache Fälle, in denen Sie nur einen Wert aus einer Liste von Werten oder ein Schlüssel-Wert-Paar aus einer Wörterbuchstruktur extrahieren möchten.
Was aber, wenn Sie mehrere Werte aus derselben Struktur extrahieren müssen oder eine JSON-Zeichenkette in ein Python-Wörterbuch parsen möchten, das verschachtelte Strukturen enthält? In solchen Fällen ist es besser, die Methode „json.loads“ zu verwenden.
Die Methode „json.loads“
import json
person = '{"name": "Steve", "languages": ["English", "French"]}'
person_dict = json.loads(person)
# Output: {'name': 'Steve', 'languages': ['English', 'French']}
print( person_dict)
# Output: ['English', 'French']
print(person_dict['languages'])
In diesem Fall ist „person“ eine JSON-Zeichenkette und „person_dict“ ein Wörterbuch.
Dadurch werden alle Schlüssel und Werte der Eingabedaten als Wörterbücher zurückgegeben. Sind keine Schlüssel vorhanden, wird für das jeweilige Schlüssel-Wert-Paar „None“ zurückgegeben. Der jedem Schlüssel-Wert-Paar zugeordnete Wert wird ermittelt, indem der entsprechende Eintrag im Wörterbuch anhand seines Namens nachgeschlagen wird.
Python liest eine JSON-Datei
Mit der Methode „json.load“ können Sie eine Datei einlesen, die ein JSON-Objekt enthält.
{"name": "Steve",
"languages": ["English", "French"]
}
So können Sie diese Datei analysieren:
import json
with open('path_to_file/person.json', 'r') as f:
data = json.load(f)
# Output: {'name': 'Steve', 'languages': ['English', 'French']}
print(data)
Python in eine JSON-Zeichenkette konvertieren
Sie können ein Wörterbuch mithilfe der Methode „json.dumps“ in eine JSON-Zeichenkette konvertieren.
import json
person_dict = {'name': 'Bob',
'age': 12,
'children': None
}
person_json = json.dumps(person_dict)
# Output: {"name": "Bob", "age": 12, "children": null}
print(person_json)
JSON in eine Datei schreiben
Um in Python JSON in eine Datei zu schreiben, können wir die Methode `json.dump()` verwenden.
import json
person_dict = {"name": "Steve",
"languages": ["English", "French"],
"married": False,
"age": 33
}
with open('person.txt', 'w') as json_file:
json.dump(person_dict, json_file)
Im obigen Programm haben wir eine Datei namens „person.txt“ im Schreibmodus mit „w.“ geöffnet. Falls die Datei noch nicht existiert, wird sie angelegt. Anschließend wandelt „json.dump“ „person_dict“ in eine JSON-Zeichenkette um, die in der Datei „person.txt“ gespeichert wird.
Wenn Sie das Programm ausführen, wird die Datei „person.txt“ erstellt. Diese Datei enthält den folgenden Text.
{"name": "Steve", "languages": ["English", "French"], "married": false, "age": 33}
Python: JSON übersichtlich darstellen
Um JSON-Daten zu analysieren und zu debuggen, kann es erforderlich sein, diese in einem besser lesbaren Format auszugeben. Dies erreichen Sie, indem Sie den Methoden `json.dumps` und `json.dump` die zusätzlichen Parameter `indent` und `sort_keys` übergeben.
import json
person_string = '{"name": "Bob", "languages": "English", "numbers": [2, 1.6, null]}'
# Getting dictionary
person_dict = json.loads(person_string)
# Pretty Printing JSON string back
print(json.dumps(person_dict, indent = 4, sort_keys=True))
Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:
{
"languages": "English",
"name": "Bob",
"numbers": [
2,
1.6,
null
]
}
Im obigen Programm haben wir vier Leerzeichen zur Einrückung verwendet, wobei die Schlüssel in aufsteigender Reihenfolge sortiert sind.
Übrigens ist der Standardwert von „indent“ „None“ und der Standardwert von „sort_keys“ „False“.
Sollte Ihnen das alles etwas zu hoch sein, bieten wir Ihnen eine hervorragende und leicht verständliche Einführung in das Web-Scraping an. Falls Sie nach rotierenden Residential-Proxys suchen, um einen reibungslosen Ablauf Ihrer Datenerfassung zu gewährleisten, wenden Sie sich bitte an unser Team, um weitere Informationen zu erhalten, oder sehen Sie sich unsere umfassenden Monatspakete an.
Häufig gestellte Fragen
Wer hat JSON entwickelt?
Douglas Crockford entwickelte es 1999 als Alternative zu XML.
Was ist ein Syntaxbaum?
Ein Syntaxbaum stellt die Struktur einer Sprache visuell dar. Er gliedert die Sprache in Satzbestandteile auf und lässt dabei den Kontext in der Regel außer Acht.
Wie liest man eine lokale JSON-Datei in Python ein?
Importieren Sie zunächst das JSON-Modul und öffnen Sie anschließend die JSON-Datei mit der Funktion `open()`, wobei Sie den Namen der JSON-Datei angeben. Lesen Sie anschließend die JSON-Datei mit der Funktion `load()` ein und speichern Sie die JSON-Daten in einer Variablen.
