Heim > Backend-Entwicklung > Python-Tutorial > Wie bekomme ich String-Objekte anstelle von Unicode von JSON in Python 2?

Wie bekomme ich String-Objekte anstelle von Unicode von JSON in Python 2?

Linda Hamilton
Freigeben: 2024-11-03 11:02:02
Original
330 Leute haben es durchsucht

How to Get String Objects Instead of Unicode from JSON in Python 2?

String-Objekte anstelle von Unicode aus JSON abrufen (Python 2)

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:

Mit PyYAML

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>
Nach dem Login kopieren

Hinweis: Diese Methode funktioniert nur für ASCII-codierte Daten.

Konvertieren von Unicode in String-Objekte

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>
Nach dem Login kopieren

Verwenden eines Objekt-Hooks

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage