Je suis un débutant avec les deux Python et RegEx, et j'aimerais savoir comment créer une chaîne qui prend des symboles et les remplace par des espaces. Toute aide est excellente.
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
Une manière, 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
fera correspondre les caractères alphanumériques et les traits de soulignement
[^\w]
correspondra à tout ce qui est pas alphanumérique ou trait de soulignement
Parfois, il faut plus de temps pour comprendre l'expression rationnelle que pour 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 personnages, vous pouvez le changer 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 une expression-générateur:
whitelist = string.letters + string.digits + ' '
new_s = ''.join(c for c in s if c in whitelist)
Je viens souvent d'ouvrir la console et chercher la solution dans les méthodes des objets. Assez souvent c'est déjà là:
>>> a = "hello ' s"
>>> dir(a)
[ (....) 'partition', 'replace' (....)]
>>> a.replace("'", " ")
'hello s'
Réponse courte: Utilisez string.replace()
.