Probablement, votre problème est que vous l'avez analysé correctement, et maintenant vous essayez d'imprimer le contenu du XML et vous ne pouvez pas car il y a des caractères Unicode étrangers. Essayez d'encoder d'abord votre chaîne unicode en ascii :
unicodeData.encode('ascii', 'ignore')
la partie 'ignore' lui indiquera simplement de sauter ces caractères. Des documents de Python :
>>> # Python 2: u = unichr(40960) + u'abcd' + unichr(1972)
>>> u = chr(40960) + u'abcd' + chr(1972)
>>> u.encode('utf-8')
'\xea\x80\x80abcd\xde\xb4'
>>> u.encode('ascii')
Traceback (most recent call last):
File "", line 1, in ?
UnicodeEncodeError: 'ascii' codec can't encode character '\ua000' in position 0: ordinal not in range(128)
>>> u.encode('ascii', 'ignore')
'abcd'
>>> u.encode('ascii', 'replace')
'?abcd?'
>>> u.encode('ascii', 'xmlcharrefreplace')
'ꀀabcd'
Vous voudrez peut-être lire cet article : http://www.joelonsoftware.com/articles/Unicode.html, que j'ai trouvé très utile comme tutoriel de base sur ce qui se passe. Après la lecture, vous arrêterez de vous sentir comme si vous deviniez simplement quelles commandes utiliser (ou du moins c'est ce qui m'est arrivé).
0 votes
Je venais juste sur SO pour poster cette question. Y a-t-il un moyen facile de nettoyer une chaîne pour
unicode()
?0 votes
Veuillez également consulter cette réponse à une question connexe : « Python UnicodeDecodeError - est-ce que je comprends mal l'encodage ? »