0
votes

Comment puis-je résoudre le problème du remplacement du caractère sharp par un caractère vide en Python?

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.


0 commentaires

3 Réponses :


0
votes

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


0 commentaires

1
votes

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"))


0 commentaires

0
votes

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"))


0 commentaires