Supprimer les ponctuation d'une chaîne de caractères
Résolu
Bonjour tout le monde,
Alors moi mon problème survient dans un gros programme, donc voici la partie qui me pose problème, sur une zone de test. Le but est de supprimer tous les éléments de

Voici le résultat obtenu avec ce programme :

Le problème, c'est que les ponctuations restent. Je précise que
Quelqu'un aurait une solution ?
Voila voila, merci pour la lecture =)
Alors moi mon problème survient dans un gros programme, donc voici la partie qui me pose problème, sur une zone de test. Le but est de supprimer tous les éléments de
string.punctation(dans le module
string, c'est tout les symboles de ponctuation) de la liste
truc.
Voici le résultat obtenu avec ce programme :
Le problème, c'est que les ponctuations restent. Je précise que
string.digitajoute tout les chiffres.
Quelqu'un aurait une solution ?
Voila voila, merci pour la lecture =)
A voir également:
- Supprimer les ponctuation d'une chaîne de caractères
- Supprimer rond bleu whatsapp - Guide
- Supprimer une page word - Guide
- Impossible de supprimer un fichier - Guide
- Caractères ascii - Guide
- Caractères spéciaux - Guide
3 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
peux-tu partager du texte, et pas des images?
as-tu envisagé d'ajouter des print() dans ton programme, pour comprendre son comportement?
peux-tu partager du texte, et pas des images?
as-tu envisagé d'ajouter des print() dans ton programme, pour comprendre son comportement?
import string truc=[string.punctuation + string.digits] print (len(truc)) for x in truc: print(x)
Bonjour,
Si tu prends le temps de regarder ce que contient
Il faut bien voir qu'en python, comme les chaînes de caractères sont immutables. Tu ne peux donc pas supprimer le i-ème caractère.
Exemple :
... renvoie :
Si tu veux créer une chaîne obtenue en modifiant/combinant une ou plusieurs chaînes, tu vas être obligé de la reconstruire en mémoire. Du coup, tu as meilleur temps de construire la nouvelle chaîne en itérant sur celle d'origine.
Bonne chance
Si tu prends le temps de regarder ce que contient
truc, ce n'est ni une chaîne de caractère, ni une liste de caractère, mais une liste qui contient une chaîne de caractère :
['!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~0123456789']. Donc quand tu itères dessus,
xdésigne le première élément de cette liste (donc la chaîne
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~0123456789'), or cette chaîne n'est pas inclue dans
string.punctuation.
Il faut bien voir qu'en python, comme les chaînes de caractères sont immutables. Tu ne peux donc pas supprimer le i-ème caractère.
Exemple :
s = "abcde" del s[2]
... renvoie :
----> 1 del s[2]
TypeError: 'str' object doesn't support item deletion
Si tu veux créer une chaîne obtenue en modifiant/combinant une ou plusieurs chaînes, tu vas être obligé de la reconstruire en mémoire. Du coup, tu as meilleur temps de construire la nouvelle chaîne en itérant sur celle d'origine.
import string truc = string.punctuation + string.digits print(truc) s = "".join( a for a in truc if a not in string.punctuation ) print(s)
Bonne chance
Dernière question.........
Dans mon programme je fais des checkboxes, qui influent sur une génération de mot de passe. Si une checkbox est cochée, le programme doit être capable de s'adapter.
Voici le code :
Du coup, quand je coche une boite (je teste majoritairement la première), la valeur de la variable
Dans mon programme je fais des checkboxes, qui influent sur une génération de mot de passe. Si une checkbox est cochée, le programme doit être capable de s'adapter.
Voici le code :
# creation des checkboutons val_button1 = 'non' check_button1 = Checkbutton(frame2, text='Ponctuations', font=('Helvetica', 20), bg='#4065A4', fg='black', justify=LEFT, onvalue='oui', offvalue='non') val_button2 = 'no' check_button2 = Checkbutton(frame2, text='Majuscule', font=('Helvetica', 20), bg='#4065A4', fg='black', justify=LEFT, variable=val_button2, onvalue='ya', offvalue='non') val_button4 = None check_button4 = Checkbutton(frame2, text='Chiffre', font=('Helvetica', 20), bg='#4065A4', fg='black', justify=LEFT, variable=val_button4, onvalue='oui', offvalue='non') val_button5 = None check_button5 = Checkbutton(frame2, text='Lettre', font=('Helvetica', 20), bg='#4065A4', fg='black', justify=LEFT, variable=val_button5, onvalue='oui', offvalue='non') # affichage des checkboutons check_button1.pack() check_button2.pack() check_button4.pack() check_button5.pack()
Du coup, quand je coche une boite (je teste majoritairement la première), la valeur de la variable
val_button1ne change pas. Pourtant, j'ai mis le
onvalueet le
offvalue... J'ai beau chercher, je n'ai rien trouvé...
Ce problème n'ayant rien à avoir avec la question initiale, merci de la poser dans un autre fil de discussion. Mais pour faire court, ça n'est pas comme ça qu'on fait proprement une interface en Tk. Notamment il n'y a pas de boucle d'événements, Je t'invite donc à regarder un tutoriel, par exemple celui-ci : ici la boucle d'événement est lancée avec
Bonne chance
root.mainloop()).
Bonne chance