Supprimer la ponctuation de la liste Python
-
La constante
string.punctuation
en Python -
Supprimer les ponctuations d’une liste avec des boucles
for
en Python - Supprimer les ponctuations d’une liste avec des compréhensions de liste en Python
-
Supprimer les ponctuations d’une liste avec la fonction
str.translate()
en Python
Ce didacticiel présentera la constante de chaîne, string.punctuation
, et discutera de certaines méthodes pour supprimer les signes de ponctuation d’une liste de chaînes en Python.
La constante string.punctuation
en Python
La string.punctuation
est une chaîne pré-initialisée en Python qui contient tous les signes de ponctuation. Pour utiliser cette chaîne, nous devons importer le module string
. La constante string.punctuation
est illustrée dans l’exemple de codage suivant.
import string
print(string.punctuation)
Production :
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
Nous avons importé le module string
et affiché la valeur de la constante string.punctuation
. La sortie affiche tous les signes de ponctuation possibles en anglais.
Supprimer les ponctuations d’une liste avec des boucles for
en Python
Nous pouvons supprimer tous les signes de ponctuation d’une liste de chaînes en utilisant le string.punctuation
avec les boucles for
en Python. L’exemple de code suivant illustre ce phénomène.
import string
words = ["hell'o", "Hi,", "bye bye", "good bye", ""]
new_words = []
for word in words:
for letter in word:
if letter in string.punctuation:
word = word.replace(letter, "")
new_words.append(word)
print(new_words)
Production :
['hello', 'Hi', 'bye bye', 'good bye', '']
Nous avons initialisé une liste de chaînes words
qui contient des signes de ponctuation. Nous avons ensuite créé une boucle imbriquée qui parcourt chaque caractère de chaque chaîne de la liste words
. La boucle externe for
parcourt chaque chaîne à l’intérieur de la liste, et la boucle interne for
parcourt chaque letter
de cette chaîne. Nous avons ensuite vérifié si cette letter
est à l’intérieur de la constante string.punctuation
avec l’instruction if
. Si la lettre est présente à l’intérieur de la constante string.punctuation
, nous la supprimons en la remplaçant par une chaîne vide. Après avoir supprimé tous les signes de ponctuation d’une chaîne, nous ajoutons cette chaîne dans notre liste new_words
. Au final, nous avons imprimé la liste des new_words
.
Le seul problème avec cette implémentation est qu’elle permet aux chaînes vides de rester dans la liste finale. Selon nos besoins, nous pouvons également supprimer les chaînes vides de la liste d’origine en plaçant une vérification supplémentaire dans nos boucles. L’extrait de code suivant montre également comment supprimer les chaînes vides de la liste.
import string
words = ["hell'o", "Hi,", "bye bye", "good bye", ""]
new_words = []
for word in words:
if word == "":
words.remove(word)
else:
for letter in word:
if letter in string.punctuation:
word = word.replace(letter, "")
new_words.append(word)
print(new_words)
Production :
['hello', 'Hi', 'bye bye', 'good bye']
Cette fois-ci, notre code a également supprimé toutes les chaînes vides de la chaîne d’origine.
Supprimer les ponctuations d’une liste avec des compréhensions de liste en Python
Le seul problème avec l’approche précédente est qu’elle nécessite trop de code pour une simple tâche consistant à supprimer les ponctuations d’une liste de chaînes. Les compréhensions de liste sont un moyen d’effectuer différentes opérations de calcul sur des éléments de liste. Nous pouvons utiliser des boucles for
et des instructions if
dans les compréhensions de liste. Le principal avantage de l’utilisation des compréhensions de liste est qu’elles nécessitent moins de code et sont généralement plus rapides qu’une simple boucle for
. Nous pouvons utiliser des compréhensions de liste avec la constante de chaîne string.punctuation
pour supprimer les signes de ponctuation d’une liste de chaînes en Python. L’exemple de code suivant nous montre comment supprimer les ponctuations d’une liste avec des compréhensions de liste.
import string
words = ["hell'o", "Hi,", "bye bye", "good bye", ""]
words = [
"".join(letter for letter in word if letter not in string.punctuation)
for word in words
]
print(words)
Production :
['hello', 'Hi', 'bye bye', 'good bye', '']
Je vais être tout à fait honnête, il est un peu difficile de comprendre le code ci-dessus, mais ce n’est pas du tout complexe. Il utilise simplement une compréhension de liste imbriquée. La partie interne du code vérifie si chaque lettre à l’intérieur d’un seul mot est présente dans la constante string.punctuation
et ne renvoie que les lettres qui ne sont pas dans string.punctuation
. La fonction str.join()
renfermant cette partie du code joint toutes les lettres renvoyées avec une chaîne vide et nous donne un mot complet sans aucun signe de ponctuation. La partie externe exécute cette compréhension de liste interne pour chaque mot à l’intérieur de notre liste de words
. Nous stockons les mots renvoyés par la compréhension de la liste externe dans la liste words
. Au final, nous affichons tous les éléments de la liste words
.
Un autre avantage de l’utilisation des compréhensions de liste est que nous économisons de l’espace sur la RAM, c’est-à-dire que tout au long de notre code, nous avons mis à jour la liste d’origine au lieu de créer une nouvelle liste pour stocker les résultats. Nous pouvons également supprimer les chaînes vides de la liste d’origine en plaçant une instruction if
supplémentaire dans la compréhension de la liste externe.
import string
words = ["hell'o", "Hi,", "bye bye", "good bye", ""]
words = [
"".join(letter for letter in word if letter not in string.punctuation)
for word in words
if word
]
print(words)
Production :
['hello', 'Hi', 'bye bye', 'good bye']
Cette fois, notre compréhension de liste externe n’exécute pas la compréhension de liste interne lorsqu’il n’y a aucun élément dans le mot. Avec cette approche, nous n’obtenons pas de chaîne vide dans la liste de chaînes résultante.
Supprimer les ponctuations d’une liste avec la fonction str.translate()
en Python
Notre implémentation précédente est bonne car elle nécessite moins de code et est plus rapide que l’utilisation de boucles traditionnelles, mais elle peut être meilleure. Bien qu’il s’agisse de moins de code, le code est un peu complexe. Le moyen le plus rapide et le plus efficace de supprimer les ponctuations d’une liste de chaînes en Python est la fonction str.translate()
. Il nécessite moins de code que les listes de compréhension et est beaucoup plus rapide. La fonction str.translate()
mappe chaque caractère à l’intérieur d’une chaîne selon une table de traduction. Dans notre cas, il mappera toutes les lettres de string.punctuation
sur une chaîne vide. L’exemple de code suivant nous montre comment supprimer les signes de ponctuation d’une liste avec la fonction str.translate()
.
import string
words = ["hell'o", "Hi,", "bye bye", "good bye", ""]
words = [word.translate(string.punctuation) for word in words]
print(words)
Production :
["hell'o", 'Hi,', 'bye bye', 'good bye', '']
Nous avons utilisé la fonction str.translate()
avec la constante string.punctuation
et les compréhensions de liste pour supprimer les signes de ponctuation de notre liste words
. Le fonction string.translate(string.punctuation)
mappe chaque lettre de la constante string.punctuation
à une chaîne vide, et la compréhension de la liste exécute ce code pour chaque chaîne de la liste words
et renvoie les résultats. Nous attribuons toutes les chaînes renvoyées à la liste words
et affichons la sortie.
La sortie affiche une chaîne vide dans les résultats. Pour supprimer davantage cette chaîne vide, nous devons placer une condition supplémentaire dans notre compréhension de liste.
import string
words = ["hell'o", "Hi,", "bye bye", "good bye", ""]
words = [word.translate(string.punctuation) for word in words if word]
print(words)
Production :
["hell'o", 'Hi,', 'bye bye', 'good bye']
Nous avons supprimé la chaîne vide du résultat précédent avec une seule condition supplémentaire.
La string.punctuation
est une chaîne constante prédéfinie qui contient tous les signes de ponctuation possibles. Plusieurs méthodes utilisent cette constante de chaîne pour supprimer les ponctuations d’une liste de chaînes, mais l’implémentation la plus simple à écrire, la plus rapide et la plus efficace consiste à utiliser la fonction str.translate()
avec des compréhensions de liste.
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedInArticle connexe - Python List
- Convertir un dictionnaire en liste en Python
- Supprimer toutes les occurrences d'un élément d'une liste en Python
- Supprimer les doublons de la liste en Python
- Comment obtenir la moyenne d'une liste en Python
- Quelle est la différence entre les méthodes de liste append et extend
- Comment convertir une liste en chaîne de caractères en Python
Article connexe - Python String
- Supprimer les virgules de la chaîne en Python
- Comment vérifier qu'une chaîne est vide de manière pythonique
- Convertir une chaîne en nom de variable en Python
- Comment supprimer les espaces dans une chaîne de caractères en Python
- Comment extraire des nombres d'une chaîne de caractèresen Python
- Comment convertir une chaîne de caractères en datetime en Python