Supprimer tous les caractères hex de chaîne de caractères en Python
Bien qu'il existe des questions similaires, je n'arrive pas à trouver une solution pour mon cas:
Je rencontre quelques ennuyeux caractères hex dans les chaînes de caractères, par exemple
'\xe2\x80\x9chttp://www.google.com\xe2\x80\x9d blah blah#%#@$^blah'
Ce dont j'ai besoin est de supprimer ces hex \xHH
caractères, et d'eux seuls, dans le but d'obtenir le résultat suivant:
'http://www.google.com blah blah#%#@$^blah'
décodage n'aide pas:
s.decode('utf8') # u'\u201chttp://www.google.com\u201d blah blah#%#@$^blah'
Comment puis-je y parvenir?
OriginalL'auteur Kludge | 2016-04-13
Vous devez vous connecter pour publier un commentaire.
Seulement de supprimer tous les caractères non-ASCII:
Autre solution possible:
Ou utiliser des expressions Régulières:
De choisir votre préférée.
Seul le second a travaillé pour moi!
OriginalL'auteur Magnun Leno
Ce ne sont pas des "caractères hex", mais la représentation interne (codé en utf-8 dans le premier cas, le point de code unicode dans le second cas) de l'unicode des caractères à GAUCHE DOUBLE guillemet " ( ' “ ') et le DROIT des GUILLEMETS' ('”').
Que la façon de les supprimer, ils ne sont que de simples personnages ainsi une simple
str.replace()
fera:Si vous voulez vous débarrasser de tous les caractères non-ascii à la fois, vous avez juste à décoder en unicode puis l'encoder au format ascii avec les "ignorer" paramètre:
la question est taggés avec python 2.7 et
str
ont undecode
méthode en python 2.7 - qui a disparu en python 3 (évidemment puisque py3 chaînes unicode si ledecode
méthode n'aurait aucun sens - mais il existe toujours sur la py3 chaîne d'octets (typebyte
).OriginalL'auteur bruno desthuilliers
Vous pouvez le faire vérifier la validité des lettres, et au lieu de taper sur tout, il est possible d'utiliser le
string
module. Ceux qui peuvent être utiles pour vousstring.ascii_letters
(contient à la foisstring.ascii_lowercase
etstring.ascii_uppercase
),string.digits
,string.printable
etstring.punctuation
.Je voudrais essayer
string.printable
premier, mais si il laisse un peu trop de personnages à travers, vous pouvez utiliser un mélange de tous les autres.Voici un exemple de la façon dont je le ferais:
OriginalL'auteur Peter
Vous pouvez utiliser décoder fin de l'encodage, tout comme ce
OriginalL'auteur Manthan Koolwal