J'ai un code quelque chose comme ça:
#incredible
Voici le résultat:
punctuation_chars = ["'", '"', ",", ".", "!", ":", ";", '#', '@']
def strip_punctuation(str_word):
for char in str_word:
if char in punctuation_chars:
new_word = str_word.replace(char,'')
return new_word
print(strip_punctuation("#inc.red.ible"))
Par exemple, dans ce code ci-dessus, je ne pouvais pas supprimer ce char pointu ou @ char par la méthode replace. Je me demande pourquoi cela se produit uniquement avec ces caractères.
3 Réponses :
salut je pense que cela devrait résoudre votre problème:
def strip_punctuation(str_word):
for char in str_word:
if char in punctuation_chars:
str_word = str_word.replace(char,'')
return str_word
Vous lisez à chaque fois str_word , même si vous avez déjà effectué d'autres modifications et les new_word enregistrées dans new_word . Assurez-vous que vous appliquez des modifications successives à la même chaîne. Par exemple:
punctuation_chars = ["'", '"', ",", ".", "!", ":", ";", '#', '@']
def strip_punctuation(str_word):
for char in str_word:
if char in punctuation_chars:
str_word = str_word.replace(char,'')
return str_word
print(strip_punctuation("#inc.red.ible"))
Vous pouvez résoudre ce problème avec la puissance de regex!
Utilisez la méthode sub du module re intégré:
incredible
Production:
import re
punctuation_chars = ["'", '"', ",", ".", "!", ":", ";", '#', '@']
def strip_punctuation(str_word):
return re.sub('\\'+'|\\'.join(punctuation_chars), '', str_word)
print(strip_punctuation("#inc.red.ible"))