Je voudrais supprimer certains caractères d'une chaîne (soit chaîne d'octets ou une chaîne unicode) en utilisant une expression régulière comme ceci:expression régulière et unicode littéraux
pattern = re.compile(ur'\u00AE|\u2122', re.UNICODE)
Si les caractères sont spécifiés comme unicode littéraux l'expression rationnelle résultante ne fonctionne pas correctement sur une chaîne d'octets.
q = 'Canon\xc2\xae EOS 7D'
pattern.sub('', q) # 'Canon\xc2 EOS 7D'
Si je convertir l'argument de la substitution à une chaîne de caractères Unicode, cependant, il fonctionne comme prévu ...
pattern.sub('', unicode(q)) # u'Canon EOS 7D'
Quelqu'un peut-il s'il vous plaît me expliquer pourquoi est-ce le cas?
grâce,
Peter
Merci pour la clarification - donc le message à emporter est "ne pas mélanger str et chaînes Unicode (sauf si vous êtes néerlandais)"? –
Je pense que si vous êtes Néerlandais, vous changez simplement la langue pour que toutes les chaînes soient Unicode par défaut. :-) – kindall