2
votes

Supprimer tous les chiffres d'une liste de chaînes

words = ['Duration12', 'Noun1', 'Adjective7']
result = [word[:-2] for word in words]
gives me 
  ['Duration', 'Nou', 'Adjectiv']
But I want to get 
  ['Duration', 'Noun', 'Adjective']
Is there any library function to implement it or should I explicitly detect the digits available and then remove them?

3 commentaires

Les chiffres seront-ils toujours à la fin des mots?


@learnerPy Vérifiez la réponse.


@Olivier Melançon ya. Et la réponse est déjà marquée comme acceptée ci-dessous


4 Réponses :


1
votes

Vous pouvez utiliser une compréhension de liste et supprimer tous les chiffres en utilisant re.sub:

['Duration', 'Noun', 'Adjective']

Résultat

import re
words = ['Duration12', 'Noun1', 'Adjective7']
[re.sub(r'[0-9]', '', w) for w in words]


4 commentaires

Bon de savoir. Par curiosité, je cherche maintenant si ['Duration [12]', 'Noun [1]', 'Adjective [7]'] est également possible


Vous voulez supprimer également les crochets?


Utilisez [re.sub (r '[0-9] +', r '[\ g <0>]', w) pour w en mots]


for words = ['Duration12: 1', 'Noun', 'Adjective7: 8'] I am getting ['Duration [12]: [1]', 'Noun', 'Adjectif [7]: [8]'] Mais j'aime avoir ['Durée [12]: 1', 'Noun', 'Adjectif [7]: 8']



0
votes

Vous pouvez filtrer les nombres en utilisant isalpha :

words = ['Duration12', 'Noun1', 'Adjective7']

result = [''.join(c for c in w if c.isalpha()) for w in words]
print(result)


0 commentaires

2
votes

Essayez celui-ci:

In [8]: from string import digits

In [9]: remove_digits = str.maketrans('', '', digits)

In [10]: [word.translate(remove_digits) for word in words]
Out[10]: ['Duration', 'Noun', 'Adjective']

Pour plus d'informations, reportez-vous au lien: Lien


0 commentaires

0
votes

Si vous êtes sûr que tous les chiffres sont à la fin des mots, vous pouvez utiliser .strip de la manière suivante:

words = ['Duration12', 'Noun1', 'Adjective7']
results = [i.strip('0123456789') for i in words]
print(results) #give ['Duration', 'Noun', 'Adjective']

mais gardez à l'esprit que cette méthode ne le ferait pas fonctionne si les chiffres sont à l'intérieur plutôt qu'à la fin


0 commentaires