de
English
Español
中國人
Tiếng Việt
Українська
Português
Français
भारतीय
Türkçe
한국인
Italiano
Indonesia
Polski JSON steht für JavaScript Object Notation. Sie ist nicht nur leichtgewichtig, sondern auch für Menschen einfach zu lesen und zu schreiben. Auch für Maschinen ist es einfach zu parsen und zu generieren. Das Parsen ist für jeden Python-Entwickler von entscheidender Bedeutung, wenn er mit Inhalten aus APIs, Konfigurationsdateien oder anderen Quellen gespeicherter Informationen zu tun hat. Dieser Artikel führt Sie durch die Grundlagen des Parsens von JSON mithilfe des Python-Moduls, einschließlich der Verwendung von json.dump python zum Speichern von Inhalten.
JSON strukturiert Details in Schlüssel-Wert-Paaren. Hier ist ein grundlegendes Beispiel für ein Objekt:
{
"name": "Alice",
"age": 30,
"is_student": false,
"courses": ["Math", "Science"]
}
Dieses Python-Json-Parsing-Beispiel enthält die üblichen Elemente: einen String, eine Zahl, einen Boolean und ein Array. Wenn man sich mit dieser Struktur vertraut macht, ist es viel einfacher, in Python zu arbeiten.
Durch die Implementierung von Python parse json string leicht mit dem eingebauten Modul in Python. Dieses Modul enthält Methoden wie json.loads() zum Lesen aus einem String und json.load() zum Lesen aus einer Datei. Umgekehrt werden json.dumps() und json.dump Python zum Schreiben von Informationen in eine Zeichenkette bzw. eine Datei verwendet.
Sehen wir uns an, wie man JSON-Daten liest, was wir als nächstes besprechen werden.
Wenn Sie json in Python lesen wollen, verwenden Sie json.loads(), um eine Zeichenkette zu analysieren und in ein Python-Objekt zu konvertieren:
import json
json_string = '{"name": "Alice", "age": 30, "is_student": false, "courses": ["Math", "Science"]}'
data = json.loads(json_string)
print(data)
Ausgabe:
Um Informationen aus einer Datei zu extrahieren, verwenden Sie diese Methode: json.load() und öffnen Sie eine json-Datei in Python:
import json
with open('data.json', 'r') as file:
data = json.load(file)
print(data)
Ausgabe:
Vor dem Schreiben müssen Sie oft vorhandene Informationen lesen oder laden - und hier wird die Python-Methode load json file nützlich. Sobald die Informationen ordnungsgemäß geladen sind, können Sie sie manipulieren und in verschiedenen Formaten zurückschreiben.
Um Informationen in einen String zu schreiben, verwenden Sie die Python-Methode json.dumps:
import json
data = {
"name": "Alice",
"age": 30,
"is_student": False,
"courses": ["Math", "Science"]
}
json_string = json.dumps(data)
print(json_string)
Ausgabe:
Um die Details dieser Datei zu schreiben, verwenden Sie die Python-Methode json.dump:
import json
data = {
"name": "Alice",
"age": 30,
"is_student": False,
"courses": ["Math", "Science"]
}
with open('data.json', 'w') as file:
json.dump(data, file)
Verschachtelte Objekte sind üblich, wenn man mit komplexeren Informationsstrukturen arbeitet, die leicht mit diesen verschachtelten Strukturen umgehen können.
import json
nested_json_string = '''
{
"name": "Alice",
"age": 30,
"is_student": false,
"courses": ["Math", "Science"],
"address": {
"street": "123 Main St",
"city": "Wonderland"
}
}
'''
data = json.loads(nested_json_string)
print(data['address']['city'])
Ausgabe:
Die Sprache kann nicht alle benutzerdefinierten Objekte automatisch in JSON umwandeln. In diesen Fällen müssen Sie einen benutzerdefinierten Encoder erstellen.
import json
class Student:
def __init__(self, name, age, is_student):
self.name = name
self.age = age
self.is_student = is_student
class StudentEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, Student):
return obj.__dict__
return super().default(obj)
student = Student("Alice", 30, False)
json_string = json.dumps(student, cls=StudentEncoder)
print(json_string)
Ausgabe:
Um in benutzerdefinierte Objekte zu deserialisieren, müssen Sie einen benutzerdefinierten Decoder implementieren, der weiß, wie man sie behandelt.
import json
class Student:
def __init__(self, name, age, is_student):
self.name = name
self.age = age
self.is_student = is_student
def student_decoder(dct):
return Student(dct['name'], dct['age'], dct['is_student'])
json_string = '{"name": "Alice", "age": 30, "is_student": false}'
student = json.loads(json_string, object_hook=student_decoder)
print(student.name)
Ausgabe:
Die Arbeit mit Datendetails kann zu mehreren häufigen Fehlern führen, insbesondere beim Parsen, Generieren oder Zugreifen auf strukturierte Inhalte. Die Verwendung eines zuverlässigen Python-Json-Parsers kann helfen, diese Probleme effizienter zu identifizieren und zu beheben. Hier sind einige der am häufigsten auftretenden Fehler:
Ein häufiger Fehler beim Parsen einer json-Datei ist das Auftreten eines ungültigen Formats. Es erfordert doppelte Anführungszeichen um Schlüssel und Zeichenkettenwerte sowie die richtige Verschachtelung von Klammern und geschweiften Klammern.
import json
invalid_json_string = "{'name': 'Alice', 'age': 30, 'is_student': False}"
try:
data = json.loads(invalid_json_string)
except json.JSONDecodeError as e:
print(f"Invalid JSON format: {e}")
Ausgabe:
Manchmal enthält der Inhalt nicht alle Schlüssel, die Sie erwarten. Mit der Methode get() können Sie fehlende Schlüssel sicher behandeln, indem Sie einen Standardwert zurückgeben, anstatt einen Fehler auszulösen.
import json
json_string = '{"name": "Alice", "age": 30}'
data = json.loads(json_string)
is_student = data.get('is_student', False)
print(is_student)import json
json_string = '{"name": "Alice", "age": 30}'
data = json.loads(json_string)
is_student = data.get('is_student', False)
print(is_student)
Verwenden Sie das Modul pdb, um Haltepunkte zu setzen und Ihren Parsing-Code zu debuggen.
import json
import pdb
json_string = '{"name": "Alice", "age": 30, "is_student": false}'
pdb.set_trace()
data = json.loads(json_string)
print(data)
Beim Web Scraping werden normalerweise Inhalte von Diensten abgerufen, die die erhaltenen Informationen zurückgeben. Im Folgenden finden Sie ein Beispiel, das die Anforderungsbibliothek zusammen mit dem Endpunkt https://httpbin.org/anything verwendet.
Vergewissern Sie sich, dass Sie das Anforderungspaket installiert haben, bevor wir beginnen:
pip install requests
Wenn Sie mit strukturierten Inhalten arbeiten, können Sie die requests-Bibliothek verwenden, um die Arbeit zu erleichtern. Geben Sie einfach eine GET-Anfrage und die URL über requests.get(url) ein. Anschließend können Sie die Antwort mit response.json() parsen. Von dort aus ist es einfach, auf bestimmte Informationen wie Header, den User Agent, den Ursprung oder die Anfrage-URL zuzugreifen und sie nach Bedarf auszudrucken.
Der Code enthält eine starke Fehlerbehandlung; er erfasst json.JSONDecodeError, wenn ein Dekodierungsfehler auftritt, und KeyError, wenn ein bestimmter Schlüssel fehlt, wodurch das Programm vor Abstürzen wegen "fehlender Daten" geschützt ist. Dank dieser Robustheit des Codes kann es echte Web-Scraping-Aufgaben perfekt bewältigen.
import requests
import json
url = 'https://httpbin.org/anything'
response = requests.get(url)
try:
data = response.json()
# Extrahieren bestimmter Daten aus der JSON-Antwort
headers = data['headers']
user_agent = headers.get('User-Agent', 'N/A')
origin = data.get('origin', 'N/A')
url = data.get('url', 'N/A')
print(f"User Agent: {user_agent}")
print(f"Origin: {origin}")
print(f"URL: {url}")
except json.JSONDecodeError:
print("Error decoding JSON response")
except KeyError as e:
print(f"Key error: {e} not found in the JSON response")
Jeder Entwickler muss wissen, wie man eine json-Datei in Python parst. Mit dem Modul und dem besten Weg, den dieses Handbuch aufzeigt, werden Sie in der Lage sein, schnell genug zu lesen, zu schreiben und zu debuggen. Das bedeutet, dass Sie Ihren Code regelmäßig testen und die richtigen Werkzeuge und die neuesten Funktionen verwenden müssen, um eine bessere Leistung zu erzielen. Diese Anleitung konzentriert sich auf das Parsen von JSON-Daten in Python, damit Sie diese Aufgaben effizient bewältigen können.
Beim Web-Scraping ist das Parsing unverzichtbar, da die Inhalte von Web-APIs oft in diesem Format vorliegen. Wenn Sie sich mit der Verarbeitung und Manipulation dieser Inhalte auskennen, können Sie wertvolle Informationen aus einer Vielzahl von Quellen effizient extrahieren.
Parsing ist eine Schlüsselqualifikation für jeden Entwickler, der mit Web-APIs, Konfigurationsdateien oder externen Quellen arbeitet. Der Umgang mit Informationen - sei es das Lesen aus einem String, einer Datei, das Schreiben strukturierter Ausgaben oder der Umgang mit verschachtelten und benutzerdefinierten Objekten - wird durch das integrierte Modul in Python vereinfacht. Entwickler können die Python-Methoden json.load(), json.loads(), json.dump(), json.dumps() freischalten und lernen, wie man mit häufigen Problemen umgeht, benutzerdefinierte Kodierer oder Dekodierer implementiert und maßgeschneiderte Anwendungen für Informationsinteraktionen erstellt, die robust und zuverlässig sind. Da es sich bei diesem Format um einen Web-Standard für den Austausch von Informationen handelt, sind diese Fähigkeiten beim Scraping, der Manipulation von Inhalten und der Integration mehrerer Dienste über APIs von großem Nutzen. Die Verwendung von einfachem Python-Code zum Lesen von json-Dateien macht das Parsen einer json-Datei in Python für jedes Projekt zugänglich, während json.dump python ein effizientes Zurückspeichern von Material ermöglicht.
Bemerkungen: 0