Convertir tous les dictionnaires de la valeur de l'utf-8 (dictionnaire de compréhension?)
J'ai un dictionnaire et je veux convertir toutes les valeurs de l'utf-8. Cela fonctionne, mais est-il un "plus pythonic" de la sorte?
for key in row.keys():
row[key] = unicode(row[key]).encode("utf-8")
Pour une liste que je pouvais faire
[unicode(s).encode("utf-8") for s in row]
mais je ne suis pas sûr de la façon de faire l'équivalent chose pour les dictionnaires.
Ce qui est différent de Python Dictionnaire De Compréhension parce que je ne suis pas en train de créer un dictionnaire à partir de zéro, mais à partir d'un dictionnaire. Les solutions à la question de ne pas me montrer comment faire une boucle à travers les paires clé/valeur dans le dictionnaire déjà existant afin de le modifier pour en faire de nouveaux k/v paires pour le nouveau dictionnaire. La réponse (déjà accepté) ci-dessous montre comment faire et est beaucoup plus clair à lire/comprendre pour quelqu'un qui a une tâche similaire à la mienne que les réponses à la question connexe, qui est plus complexe.
- Je suis impressionné de voir que vous avez réussi à venir avec la bonne phrase (dictionnaire de compréhension), mais pas pour de la recherche pour "python dictionnaire de compréhension"!
- pourquoi êtes-vous convertir vos clés de l'utf-8? cela sonne comme XY problème
- Double Possible de Python Dictionnaire de Compréhension
- Danger Robinson!
unicode(row[key])
va utiliser le jeu de caractères du système de décoderrow[key]
. Cela implique querow[key]
est déjà codé un jeu de caractères spécifique. En outre, vous ne devriez pas encoder jusqu'à ce que vous avez besoin à la sortie de quelque part, dans ce cas, permettent l'impression de convertir ou d'écrire à l'aide d'un codage de texte wrapper, commeio.open()
- J'ai trouvé compréhension de liste, et les extrapoler à un dictionnaire de la compréhension, mais ne trouvez pas un bon exemple, quand j'ai cherché sur google.
- Je suis la conversion pas mes clés, mais mes valeurs de l'utf-8, car quand j'essaye d'écrire avec un CSV DictWriter il se brise sur des chaînes unicode qui sont en dehors de la plage ascii. À L'Aide De Python 2.7
- Je vous conseille d'utiliser github.com/jdunck/python-unicodecsv au lieu d'essayer de rédiger votre propre encodeur/décodeur
- pourquoi est-ce mieux? Avoir à installer des paquets supplémentaires fait que c'est un soucis pour le partage du code.
Vous devez vous connecter pour publier un commentaire.
Utiliser un dictionnaire de compréhension. On dirait que vous êtes débutant avec un dictionnaire pour:
L'exemple de dictionnaire des compréhensions est près de la fin du bloc dans le lien.
Que j'ai eu ce problème aussi, j'ai construit une fonction très simple qui permet à tout dict être décodé en utf-8 (Le problème avec la réponse actuelle est qu'il s'applique seulement pour les simples dict).
Si ça peut aider quelqu'un, il est grand, ici, est la fonction :
Ça dépend de pourquoi vous êtes implicitement le codage UTF-8. Si c'est parce que vous êtes en écriture à un fichier, le pythonic façon est de laisser vos chaînes de caractères au format Unicode et coder sur sortie:
Vous pouvez simplement parcourir les touches si vous voulais:
Meilleure approche pour convertir non-ascii dictionnaire de la valeur dans ascii caractères est
Meilleure approche pour convertir non-utf-8 dictionnaire de la valeur dans utf-8 caractères est
Pour plus d'information, lire python unicode documentation