>>> teststring = 'aõ'
>>> type(teststring)
<type 'str'>
>>> teststring
'a\xf5'
>>> print teststring
aõ
>>> teststring.decode("ascii", "ignore")
u'a'
>>> teststring.decode("ascii", "ignore").encode("ascii")
'a'
Ce qui est ce que je voulais vraiment stocker en interne lorsque je supprime des caractères non-ASCII. Pourquoi le decode ("ascii donner une chaîne unicode?Suppression des caractères non-ascii d'un type donné en Python
>>> teststringUni = u'aõ'
>>> type(teststringUni)
<type 'unicode'>
>>> print teststringUni
aõ
>>> teststringUni.decode("ascii" , "ignore")
Traceback (most recent call last):
File "<pyshell#79>", line 1, in <module>
teststringUni.decode("ascii" , "ignore")
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf5' in position 1: ordinal not in range(128)
>>> teststringUni.decode("utf-8" , "ignore")
Traceback (most recent call last):
File "<pyshell#81>", line 1, in <module>
teststringUni.decode("utf-8" , "ignore")
File "C:\Python27\lib\encodings\utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf5' in position 1: ordinal not in range(128)
>>> teststringUni.encode("ascii" , "ignore")
'a'
Ce qui est encore une fois ce que je voulais. Je ne comprends pas ce comportement. Quelqu'un peut-il me expliquer ce qui se passe ici?
edit: je pensais que cela me comprendre les choses pour que je puisse résoudre mon problème réel du programme que je déclare ici: Converting Unicode objects with non-ASCII symbols in them into strings objects (in Python)
cette perspective l'a effectivement résolu =), merci – fullmooninu
si cela ne fonctionne pas, essayez aussi d'utiliser BeautifulSoup (html) .encode pour html ou le module regex –