1
votes

Supprimer les caractères inutiles de la chaîne en python

zenPython = '' ' Le Zen de Python, par Tim Peters

Mieux vaut beau que laid. L'explicite vaut mieux que l'implicite. Le simple vaut mieux que le complexe. Complexe vaut mieux que compliqué. Plat est mieux que niché. Clairsemé vaut mieux que dense. La lisibilité compte. Les cas spéciaux ne sont pas assez spéciaux pour enfreindre les règles. Bien que l'aspect pratique l'emporte sur la pureté. Les erreurs ne doivent jamais passer en silence. À moins d'être explicitement réduit au silence. Face à l'ambiguïté, refusez la tentation de deviner. Il devrait y avoir une - et de préférence une seule - façon évidente de le faire. Bien que cette manière ne soit pas évidente au début, sauf si vous êtes néerlandais. C'est mieux que jamais. Bien que jamais ne soit souvent mieux que bien maintenant. Si l'implémentation est difficile à expliquer, c'est une mauvaise idée. Si la mise en œuvre est facile à expliquer, cela peut être une bonne idée. '' '

Comment supprimer des caractères inutiles comme -, * ,! dans cette chaîne zenpython en utilisant la compréhension de liste et le fractionnement ??

J'ai fait une solution en utilisant replace et une boucle normale en python mais j'ai besoin d'une solution optimale pour cela.


5 commentaires

pouvez-vous définir inutile dans ce cas? Voulez-vous supprimer un caractère qui n'est pas alphanumérique?


Créer une classe de caractères à remplacer en utilisant re.sub ?


Ici inutile est -


Alors pourriez-vous s'il vous plaît inclure votre résultat final attendu?


Pas lié à la question. Voici un fait amusant de type importez ceci pour obtenir le zen de python par Tim peters.


4 Réponses :


0
votes

Utilisez la fonction maketrans () où votre premier paramètre est une liste de "-, *,!" et deuxième liste constituée de chaînes vides - ""


0 commentaires

0
votes

Vous pouvez utiliser des expressions régulières pour le faire à votre place.

import re

output = re.sub('[^A-Z a-z 0-9 \n]+', '', my_string)

print(output)

Cela devrait supprimer les caractères inutiles que vous avez mentionnés dans la question.

J'espère que cela vous aidera!


0 commentaires

0
votes

vous pouvez utiliser une expression régulière:

import re

# note that * is a special character in regular expressions so you have to use \*
unwanted_char = '--,\*,!'  
pattern = '|'.join(unwanted_char.split(','))
print(re.sub(pattern , '', zenPython))

sortie:

Le Zen de Python, par Tim Peters

Mieux vaut beau que laid. L'explicite vaut mieux que l'implicite. Le simple vaut mieux que le complexe. Complexe vaut mieux que compliqué. Plat est mieux que niché. Clairsemé vaut mieux que dense. Lisibilité compte. Les cas spéciaux ne sont pas assez spéciaux pour enfreindre les règles. Bien que l'aspect pratique l'emporte sur la pureté. Les erreurs ne devraient jamais passer silencieusement. À moins d'être explicitement réduit au silence. Face à l'ambiguïté, refusez le tentation de deviner. Il devrait y en avoir un et de préférence un seul manière évidente de le faire. Bien que cette manière ne soit pas évidente au début sauf si vous êtes néerlandais. C'est mieux que jamais. Bien que ce ne soit jamais souvent mieux que maintenant. Si l'implémentation est difficile à expliquer, c'est Une mauvaise idée. Si la mise en œuvre est facile à expliquer, cela peut être une bonne idée.


0 commentaires

1
votes

Caractères spéciaux supprimés avec strip () et compréhension de liste

words = zenPython.split()
for i in [',', '.', '-', '*', '!']:
    words = [x.strip(i) for x in words]    #list of words with ", . - * !" characters removed


0 commentaires