544 votes

Convertir une chaîne Unicode en chaîne en Python (contenant des symboles supplémentaires)

Comment convertir une chaîne Unicode (contenant des caractères supplémentaires comme £, etc.) en une chaîne Python?

625voto

Sorantis Points 6066
title = u"Klüft skräms inför på fédéral électoral große"
import unicodedata
unicodedata.normalize('NFKD', title).encode('ascii','ignore')
'Kluft skrams infor pa federal electoral groe'

341voto

Ferran Points 3353

Vous pouvez utiliser l'encodage en ASCII si vous n'avez pas besoin de traduire les caractères non-ASCII:

 >>> a=u"aaaàçççñññ"
>>> type(a)
<type 'unicode'>
>>> a.encode('ascii','ignore')
'aaa'
>>> a.encode('ascii','replace')
'aaa???????'
>>>
 

158voto

igco Points 295
 >>> text=u'abcd'
>>> str(text)
'abcd'
 

Si une simple conversion.

122voto

Brian Points 48423

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.

60voto

Bastien Léonard Points 18404
Voici un exemple :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X