Comment convertir une chaîne Unicode (contenant des caractères supplémentaires comme £, etc.) en une chaîne Python?
Réponses
Trop de publicités?Si vous avez une chaîne Unicode, et vous voulez écrire cela dans un fichier, ou d'autres sérialisés formulaire, vous devez d'abord coder en une représentation particulière qui peut être stockée. Il y a plusieurs encodages Unicode, UTF-16 (utilise deux octets pour la plupart des caractères Unicode) ou UTF-8 (de 1 à 4 octets / codepoint selon le personnage), etc. Pour convertir cette chaîne en un codage particulier, vous pouvez utiliser:
>>> s= u'£10'
>>> s.encode('utf8')
'\xc2\x9c10'
>>> s.encode('utf16')
'\xff\xfe\x9c\x001\x000\x00'
Cette matière première chaîne d'octets peuvent être écrites dans un fichier. Toutefois, notez que lorsque les lisant, vous devez savoir de quel encodage et de décodage à l'aide de cette même codage.
Lors de l'écriture dans des fichiers, vous pouvez vous débarrasser de ce manuel procédé de codage/décodage en utilisant les codecs module. Ainsi, pour ouvrir un fichier de code à toutes les chaînes Unicode en UTF-8, utilisez:
import codecs
f = codecs.open('path/to/file.txt','w','utf8')
f.write(my_unicode_string) # Stored on disk as UTF-8
Notez que tout ce qui utilise ces fichiers doivent comprendre ce que l'encodage du fichier est s'ils veulent lire. Si vous êtes le seul à faire la lecture/écriture, ce n'est pas un problème, sinon assurez-vous que vous écrivez dans une forme compréhensible par quoi que ce soit d'autre utilise les fichiers.
En Python 3, cette forme d'accès au fichier est par défaut, et le haut- open
fonction prend un paramètre d'encodage et de toujours traduire de et vers/à partir des chaînes Unicode (la chaîne par défaut de l'objet en Python 3) pour les fichiers ouverts en mode texte.