Je veux supprimer des caractères dans une chaîne en python:
string.replace(',', '').replace("!", '').replace(":", '').replace(";", '')...
Mais j'ai de nombreux personnages à supprimer. J'ai pensé à une liste
list = [',', '!', '.', ';'...]
Mais comment puis-je utiliser le list
pour remplacer les caractères dans le string
?
Réponses:
Si vous utilisez python2 et que vos entrées sont des chaînes (pas des unicodes), la meilleure méthode est
str.translate
:Sinon, il y a les options suivantes à considérer:
A. Répétez le sujet sujet par caractère, omettez les caractères indésirables et
join
la liste résultante:(Notez que la version du générateur
''.join(c for c ...)
sera moins efficace).B. Créez une expression régulière à la volée et
re.sub
avec une chaîne vide:(
re.escape
garantit que des caractères comme^
ou]
ne cassent pas l'expression régulière).C. Utilisez la variante de mappage de
translate
:Code de test complet et horaires:
Résultats:
(En guise de remarque, le chiffre pour
remove_chars_translate_bytes
pourrait nous donner une idée pourquoi l'industrie était réticente à adopter Unicode pendant si longtemps).la source
TypeError: translate() takes exactly one argument (2 given)
. Apparemment, il prend dict comme argument.Vous pouvez utiliser
str.translate()
:Exemple:
la source
s.translate(dict.fromkeys(map(ord, u",!.;")))
unicode.translate()
méthode a des paramètres différents de lastr.translate()
méthode. Utilisez la variante dans le commentaire ci-dessus pour les objets Unicode.Vous pouvez utiliser la méthode translate .
la source
la source
Si vous utilisez python3 et cherchez la
translate
solution - la fonction a été modifiée et prend désormais 1 paramètre au lieu de 2.Ce paramètre est une table (peut être un dictionnaire) où chaque clé est l'ordinal Unicode (int) du caractère à rechercher et la valeur est le remplacement (peut être soit un ordinal Unicode ou une chaîne à laquelle mapper la clé).
Voici un exemple d'utilisation:
la source
Une autre approche utilisant regex:
la source
Pourquoi pas une simple boucle?
Évitez également de nommer les listes «liste». Il remplace la fonction intégrée
list
.la source
vous pourriez utiliser quelque chose comme ça
Ce code n'est pas le mien et vient d' ici, c'est un excellent article et explique en profondeur ce
la source
Un autre sujet intéressant sur la suppression de l'accent UTF-8 forme une chaîne convertissant un caractère en son caractère standard non accentué:
Quelle est la meilleure façon de supprimer les accents dans une chaîne unicode python?
extrait de code du sujet:
la source
Peut-être une façon plus moderne et fonctionnelle d'atteindre ce que vous souhaitez:
veuillez noter que dans ce but particulier, c'est une exagération, mais une fois que vous avez besoin de conditions plus complexes, le filtre est pratique
la source
manière simple,
production:
this-is-string--foo----bar--tuna---sandwich--is---good
la source
Que diriez-vous de cela - une doublure.
la source
je pense que c'est assez simple et fera l'affaire!
c'est une façon de le faire. Mais si vous en avez assez de conserver une liste de caractères que vous souhaitez supprimer, vous pouvez le faire en utilisant le numéro de commande des chaînes que vous parcourez. le numéro de commande est la valeur ascii de ce caractère. le nombre ascii pour 0 comme caractère est 48 et le nombre ascii pour minuscule z est 122 donc:
la source
Ces jours-ci, je plonge dans le régime, et maintenant je pense que je suis bon en récurrence et en évaluation. HAHAHA. Partagez simplement de nouvelles façons:
d'abord, évaluez-le
deuxièmement, récusez-le
Hé, ne dévalorisez pas. Je veux juste partager une nouvelle idée.
la source
Je pense à une solution pour cela. Je ferais d'abord la chaîne entrée sous forme de liste. Ensuite, je remplacerais les éléments de la liste. Ensuite, en utilisant la commande join, je retournerai list sous forme de chaîne. Le code peut être comme ceci:
Cela supprimerait n'importe quoi de la chaîne. Qu'est ce que tu penses de ça?
la source
Voici une
more_itertools
approche:Ici, nous séparons les éléments trouvés dans le
blacklist
, aplatissons les résultats et joignons la chaîne.la source
Python 3, implémentation de la compréhension de liste sur une seule ligne.
la source
Retirer *%,&@! à partir de la chaîne inférieure:
la source