Comment faire pour supprimer toutes les séquences d'échappement à partir d'une liste de chaînes de caractères?
Je veux supprimer tous les types de séquences d'échappement à partir d'une liste de chaînes de caractères. Comment puis-je faire cela?
entrée:
['william', 'short', '\x80', 'twitter', '\xaa', '\xe2', 'video', 'guy', 'ray']
de sortie:
['william', 'short', 'twitter', 'video', 'guy', 'ray']
http://docs.python.org/reference/lexical_analysis.html#string-literals
Le dernier objet de type string n'a aucune information sur la manière dont le littéral de chaîne qui contrcuted il contenait une séquence d'échappement. Si vous ne pouvez même pas dire si il y en a, comment voulez-vous "supprimer"?
OriginalL'auteur Bruce | 2011-11-13
Vous devez vous connecter pour publier un commentaire.
Quelque chose comme cela?
Modifier: ok, ce n'est pas ce que vous voulez. Ce que vous voulez ne peut pas être fait, en général, parce que, comme @Sven Marnach a expliqué, les chaînes ne contiennent pas de séquences d'échappement. Ceux-ci sont juste la notation dans les littéraux de chaîne.
Vous pouvez filtrer toutes les chaînes de caractères avec des caractères non-ASCII à partir de votre liste avec
OriginalL'auteur Fred Foo
Si vous voulez bande de certains personnages que vous n'aimez pas, vous pouvez utiliser le traduire fonction de les dépouiller:
Cette bande de tous ces caractères de contrôle:
escapes = ''.join([chr(char) for char in range(1, 32)])
s.translate(None, escapes)
c'est un changement agréable. Merci.
J'aime cette réponse plutôt que le premier. il fonctionne bien et très flexible.
OriginalL'auteur sarnold
Vous pouvez filtrer sur "les mots" qui ne sont pas alphanumérique à l'aide d'une liste de compréhension et
str.isalnum()
:Si vous souhaitez filtrer les nombres, aussi, utiliser
str.isalpha()
à la place:OriginalL'auteur Johnsyweb
Cela ne peut être fait, au moins à la portée que vous vous posez. Comme d'autres l'ont mentionné, la durée d'exécution python ne sait pas la différence entre la chose avec des séquences d'échappement, et quelque chose sans.
Exemple:
imprime
True
. Donc il n'y a pas moyen de trouver la différence entre ces deux chaînes, sauf si vous essayez une analyse statique de votre script python.OriginalL'auteur Adam Wagner
J'ai eu des problèmes similaires lors de la conversion de hexadimal à la Chaîne.C'est ce que finalement travaillé en python
Exemple
OriginalL'auteur AKV