Konvertieren Sie jedes Wörterbuch Wert auf utf-8 (Wörterbuch Verständnis?)
Habe ich ein Wörterbuch und ich will konvertieren Sie alle Werte auf utf-8. Das funktioniert auch, aber gibt es ein "mehr pythonic" Weg?
for key in row.keys():
row[key] = unicode(row[key]).encode("utf-8")
Für eine Liste, die ich tun konnte,
[unicode(s).encode("utf-8") for s in row]
aber ich bin nicht sicher, wie machen Sie das gleiche, was für Wörterbücher.
Diese unterscheidet sich von Python-Dictionary Comprehension, weil ich versuche nicht, um ein Wörterbuch zu erstellen, aus dem nichts, sondern aus einer bestehenden dictionary. Die Lösungen zu der verlinkten Frage nicht mir zeigen, wie man eine Schleife über die Schlüssel/Wert-Paare in das vorhandene Wörterbuch, um Sie zu ändern in neue k/v-Paare für das neue Wörterbuch. Die Antwort (bereits akzeptiert) unten zeigt, wie das zu tun, und ist viel klarer zu Lesen/verstehen für jemanden, der eine Aufgabe ähnlich wie mir, als die Antworten auf die verlinkten Verwandte Frage, die komplexer ist.
warum sind Sie konvertieren Sie Ihre Schlüssel auf utf-8? das klingt wie XY-problem
Mögliche Duplikate von Python-Dictionary Comprehension
Gefahr Robinson!
unicode(row[key])
wird, verwenden Sie den system-Zeichensatz zu Dekodieren row[key]
. Dies impliziert, dass row[key]
ist bereits codiert, um einen bestimmten Zeichensatz. Weiter sollte man nicht codieren, bis Sie Ausgabe, die es irgendwo, in dem Fall erlauben, drucken, konvertieren oder schreiben Sie eine encoding-text-wrapper, wie io.open()
Ich fand die Liste Verständnis, und extrapoliert zum Wörterbuch begreifen, aber nicht finden, ein gutes Beispiel, wenn ich gegoogelt.
InformationsquelleAutor PurpleVermont | 2015-11-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Wörterbuch Verständnis. Es sieht aus wie Sie sind, beginnend mit einem Wörterbuch so:
Beispiel für die Wörterbuch-Verstehens ist in der Nähe des Ende des Blocks in dem link.
InformationsquelleAutor That1Guy
Es hängt davon ab, warum Sie sind implizit in der Kodierung zu UTF-8. Wenn es ist, weil Sie eine Datei schreiben, die pythonic Weg ist, lassen Sie Ihre Zeichenfolgen als Unicode-Kodierung und bei der Ausgabe:
Python 2.x-CSV-Modul defekt ist mit Unicode, so dass die anderen Mitwirkenden die Antworten sind der einfachste Ansatz. Wenn du es richtig machen willst, wie Python ist3 gilt es, eine Feste CSV-Modul: github.com/jdunck/python-unicodecsv
Ich kann nicht mit Python 3 für andere Gründe, aber vielen Dank für das zeigen der "richtige Weg", es zu tun, wenn möglich.
InformationsquelleAutor Alastair McCormack
Können Sie einfach Durchlaufen und die Schlüssel, wenn Sie wollte:
InformationsquelleAutor ergonaut
Als ich hatte dieses problem auch, ich baute eine sehr einfache Funktion, die ermöglicht es jedem dict dekodiert werden in utf-8 (Das problem mit der aktuellen Antwort ist, dass es gilt nur für einfache dict).
Ob es helfen kann, jemand, es ist toll, hier ist die Funktion :
InformationsquelleAutor Henri Chabert
Beste Ansatz, um zu konvertieren nicht-ascii - Wörterbuch-Wert in ascii - Zeichen ist
Beste Ansatz, um zu konvertieren nicht-utf-8 Wörterbuch-Wert in utf-8 Zeichen ist
Weitere Referenz Lesen python-unicode-Dokumentation
InformationsquelleAutor Anurag Misra