Konvertiere jeden Wörterbuchwert in utf-8 (Wörterbuchverstehen?)

Ich habe ein Wörterbuch und ich möchte jeden Wert in utf-8 umwandeln. Das funktioniert, aber gibt es einen "mehr pythonischen" Weg?

for key in row.keys(): row[key] = unicode(row[key]).encode("utf-8") 

Für eine Liste konnte ich tun

 [unicode(s).encode("utf-8") for s in row] 

Aber ich bin mir nicht sicher, wie ich das Gleiche für Wörterbücher mache.

Dies ist anders als Python Dictionary Comprehension, weil ich nicht versuchen, ein Wörterbuch von Grund auf neu zu erstellen, sondern aus einem vorhandenen Wörterbuch. Die Lösungen für die verknüpfte Frage zeigen mir nicht, wie man die Schlüssel / Wert-Paare im vorhandenen Wörterbuch durchläuft, um sie in neue k / v-Paare für das neue Wörterbuch zu ändern. Die Antwort (bereits akzeptiert) unten zeigt, wie das zu tun und ist viel klarer zu lesen / zu verstehen für jemanden, der eine Aufgabe hat, die meiner ähnlich ist als die Antworten auf die verknüpfte Frage, die komplexer ist.

3 Solutions collect form web for “Konvertiere jeden Wörterbuchwert in utf-8 (Wörterbuchverstehen?)”

Verwenden Sie ein Wörterbuchverstehen . Es sieht so aus, als hättest du mit einem Wörterbuch so:

  mydict = {k: unicode(v).encode("utf-8") for k,v in mydict.iteritems()} 

Das Beispiel für Wörterbuchverstehen ist nahe dem Ende des Blocks im Link.

Es hängt davon ab, warum du implizit für UTF-8 kodierst. Wenn es ist, weil Sie in eine Datei schreiben, ist die pythonische Art und Weise, Ihre Zeichenfolgen als Unicode zu verlassen und auf Ausgabe zu kodieren:

 with io.open("myfile.txt", "w", encoding="UTF-8") as my_file: for (key, values) in row.items(): my_string = u"{key}: {value}".format(key=key, value=value) my_file.write(my_string) 

Sie können einfach durch die Schlüssel iterieren, wenn Sie wollten:

 {x:unicode(a[x]).encode("utf-8") for x in a.keys()} 
  • Python & MySql: Unicode und Codierung
  • Ansi zu UTF-8 mit Python verursacht Fehler
  • Was wird für unicode_literals verwendet?
  • Kodieren von Postfach (SMTP) in Python mit Nicht-ASCII-Zeichen
  • Python kann zu utf-8 codieren, kann aber nicht dekodieren
  • Hat jemand in der Lage, UTF-8 Zeichen mit python's xlwt schreiben?
  • UnicodeDecodeError: 'ascii' codec kann das Byte 0xef nicht in Position 1 decodieren
  • Python und UTF-8: Art von verwirrend
  • Wie lese ich UTF-8 Dateien mit Pandas?
  • MIMEText UTF-8 kodiert Probleme beim Senden von E-Mails
  • Wie gebe ich den arabischen Text in meinen Python-Code ein?
  • Python ist die beste Programmiersprache der Welt.