Beim Parsen von JSON aus ASCII-codierten Textdateien in Python 2 besteht das Standardverhalten darin, Zeichenfolgen darzustellen Werte als Unicode-Objekte. Dies kann ein Problem darstellen, wenn Sie mit Bibliotheken arbeiten, die nur String-Objekte akzeptieren.
Glücklicherweise gibt es mehrere Möglichkeiten, String-Objekte anstelle von Unicode-Objekten zu erhalten:
PyYAML ist eine Python-Bibliothek zum Parsen von YAML, einer Obermenge von JSON. Es bietet eine bequeme Möglichkeit, Zeichenfolgenobjekte abzurufen und gleichzeitig die JSON-Struktur beizubehalten:
<code class="python">import yaml json_string = '["a", "b"]' data = yaml.safe_load(json_string) # Returns a list of strings</code>
Hinweis: Diese Methode funktioniert nur für ASCII-codierte Daten.
Wenn die Daten Unicode-codiert sind, können Sie eine Konvertierungsfunktion verwenden, um die Unicode-Strings in reguläre Strings umzuwandeln:
<code class="python">def unicode_to_string(obj): if isinstance(obj, basestring): return obj.encode('utf-8') elif isinstance(obj, dict): return dict((unicode_to_string(k), unicode_to_string(v)) for k, v in obj.iteritems()) elif isinstance(obj, list): return [unicode_to_string(v) for v in obj] else: return obj # Usage: json_string = '["\u00e1", "\u00e9"]' data = json.loads(json_string) converted_data = unicode_to_string(data) # Converts Unicode strings to strings</code>
Sie können auch einen Objekt-Hook verwenden, um Unicode-Strings während der Serialisierung in Strings umzuwandeln:
<code class="python">import json def object_hook(obj): if isinstance(obj, unicode): return obj.encode('utf-8') return obj # Usage: json_string = '["a", "b"]' data = json.loads(json_string, object_hook=object_hook) # Converts Unicode strings to strings during deserialization</code>
Das obige ist der detaillierte Inhalt vonWie bekomme ich String-Objekte anstelle von Unicode von JSON in Python 2?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!