87 votes

Comment supprimer les symboles d'une chaîne de caractères avec Python ?

Je suis un débutant à la fois avec Python et RegEx, et je voudrais savoir comment faire une chaîne qui prend des symboles et les remplace par des espaces. Toute aide est la bienvenue.

Par exemple :

how much for the maple syrup? $20.99? That's ricidulous!!!

dans :

how much for the maple syrup 20 99 That s ridiculous

0 votes

Je vous conseille de lire la documentation relative au concernant bibliothèque. Elle comprend de très bons exemples.

13 votes

Il est étrange que cette question soit marquée comme un doublon d'une question posée plus d'un an plus tard.

166voto

dF. Points 29787

D'une part, en utilisant expressions régulières :

>>> s = "how much for the maple syrup? $20.99? That's ridiculous!!!"
>>> re.sub(r'[^\w]', ' ', s)
'how much for the maple syrup   20 99  That s ridiculous   '
  • \w correspondra aux caractères alphanumériques et aux caractères de soulignement.

  • [^\w] correspondra à tout ce qui est pas alphanumérique ou tiret bas

16 votes

Il convient de noter que ^ \w hors parenthèses signifie "correspond à un caractère alphanumérique en début de ligne". Ce n'est qu'à l'intérieur des parenthèses ([^]) que l'on peut trouver un caractère alphanumérique. \w ) que le symbole du caret signifie "ignorez tous les caractères ici".

1 votes

@cmptrgeekken : Merci, c'est corrigé.

10 votes

À la place de [^ \w vous pouvez également utiliser \W ce qui est l'opposé de \w.

31voto

monkut Points 14549

Il est parfois plus long de comprendre l'expression rationnelle que de l'écrire en python :

import string
s = "how much for the maple syrup? $20.99? That's ricidulous!!!"
for char in string.punctuation:
    s = s.replace(char, ' ')

Si vous avez besoin d'autres caractères, vous pouvez le modifier pour utiliser une liste blanche ou étendre votre liste noire.

Exemple de liste blanche :

whitelist = string.letters + string.digits + ' '
new_s = ''
for char in s:
    if char in whitelist:
        new_s += char
    else:
        new_s += ' '

Exemple de liste blanche utilisant un générateur-expression :

whitelist = string.letters + string.digits + ' '
new_s = ''.join(c for c in s if c in whitelist)

2 votes

Je viens d'utiliser cette méthode de liste blanche pour un projet sur lequel je travaille. Merci !

1 votes

+1, python, j'adore.

9voto

buster Points 194

Souvent, j'ouvre simplement la console et je cherche la solution dans les méthodes des objets. Très souvent, elle s'y trouve déjà :

>>> a = "hello ' s"
>>> dir(a)
[ (....) 'partition', 'replace' (....)]
>>> a.replace("'", " ")
'hello   s'

Réponse courte : Utilisez string.replace() .

2voto

Jason Baker Points 56682

Je vous conseille de lire la documentation relative au concernant bibliothèque. Elle comprend de très bons exemples.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X