Beibehalten von String-Typen beim Parsen von JSON in Python 2
Das Parsen von JSON in Python 2 kann manchmal dazu führen, dass String-Werte in Unicode-Objekte umgewandelt werden. Dies kann bei der Verbindung mit Bibliotheken, die ausschließlich String-Objekte erfordern, zu Herausforderungen führen.
JSON-Konvertierung in Unicode-Objekte
Bei Verwendung von JSON oder simplejson zum Laden von ASCII-codierten Textdateien Bei Python 2 kann das Problem auftreten, dass Zeichenfolgenwerte in Unicode-Objekte konvertiert werden. Dies wird durch den Standardkodierungsmechanismus von Python 2 erklärt, der Unicode für Text voraussetzt.
Alternative Parsing-Option: PyYAML
Um dieses Problem zu beheben, sollten Sie die Verwendung von PyYAML zum Parsen von JSON in Betracht ziehen Dateien. PyYAML behandelt Schlüssel und Werte standardmäßig als String-Objekte und bietet so eine einfache Lösung zum Beibehalten von String-Typen.
Beispiel
<code class="python">import yaml list_dump = json.dumps(['a', 'b']) yaml.safe_load(list_dump) # Returns string objects: ['a', 'b']</code>
Hinweise:
Konvertierungsfunktion
Wenn PyYAML keine Option ist oder Sie mit Unicode arbeiten müssen, eine Konvertierungsfunktion wie die von Mark vorgeschlagene Amery kann verwendet werden.
Beispiel
<code class="python">def convert_to_str(data): """Convert Unicode values to strings.""" if isinstance(data, dict): return {convert_to_str(k): convert_to_str(v) for k, v in data.items()} elif isinstance(data, list): return [convert_to_str(v) for v in data] elif isinstance(data, unicode): return data.encode('utf-8') else: return data</code>
Durch die Verwendung dieser Funktion als object_hook während des JSON-Ladens werden Unicode-Werte in Zeichenfolgen konvertiert.
Das obige ist der detaillierte Inhalt vonWie bleiben String-Typen beim Parsen von JSON in Python 2 erhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!