Comment travailler avec unicode Python

Je suis en train de nettoyer tout le code HTML d'une chaîne de sorte que le résultat final est un fichier texte. J'ai quelques recherches sur les différents "convertisseurs" et je commence à pencher vers la création de mon propre dictionnaire pour les entités et les symboles et l'exécution d'un remplacement sur la chaîne. Je pense que je veux automatiser le processus et il y a beaucoup de variabilité dans la qualité de l'html sous-jacent. Pour commencer la comparaison de la vitesse de ma solution et l'une des solutions de rechange par exemple pyparsing j'ai décidé de tester de remplacer \xa0 l'aide de la méthode de chaîne à remplacer. Je reçois un

UnicodeDecodeError: 'ascii' codec can't decode byte 0xa0 in position 0: ordinal not in range(128)

La ligne de code a été

s=unicodestring.replace('\xa0','')

De toute façon j'ai décidé que j'avais besoin de la faire précéder d'une r alors, j'ai couru cette ligne de code:

s=unicodestring.replace(r'\xa0','')

Il s'exécute sans erreur, mais j'ai quand je regarde une tranche de s je vois que l' \xaO est toujours là

Pourquoi seriez-vous le préfixe '\xa0' avec un r? Ce qui en fait une chaîne brute - qui est, littéralement, contient une barre oblique inverse, x, a, 0. Sans le r, il contenait un caractère unique avec le code hex a0, qui, je pense, est ce que tu voulais.
Parce que j'essayais de deviner pourquoi j'ai obtenu l'erreur et je sais que parfois, à force de le \ à lire que vous avez à faire un littéral de chaîne et aussi le \xa0 est ce qui existe réellement dans ma source. qu'est-ce que le code hex a0?

OriginalL'auteur PyNEwbie | 2009-04-15