Existe-t-il un moyen efficace d’exclure des nombres d’une chaîne en python? Vous utilisez nltk ou base python?
Merci, Ben
Oui, vous pouvez utiliser une expression régulière pour cela:
import re
output = re.sub(r'\d+', '', '123hello 456world')
print output # 'hello world'
str.translate
devrait être efficace.
In [7]: 'hello467'.translate(None, '0123456789')
Out[7]: 'hello'
Pour comparer str.translate
à re.sub
:
In [13]: %%timeit r=re.compile(r'\d')
output = r.sub('', my_str)
....:
100000 loops, best of 3: 5.46 µs per loop
In [16]: %%timeit pass
output = my_str.translate(None, '0123456789')
....:
1000000 loops, best of 3: 713 ns per loop
Essayez re.
import re
my_str = '123hello 456world'
output = re.sub('[0-9]+', '', my_str)
Voici une méthode utilisant str.join()
, str.isnumeric()
et une expression génératrice qui fonctionnera sous 3.x:
>>> my_str = '123Hello, World!4567'
>>> output = ''.join(c for c in my_str if not c.isnumeric())
>>> print(output)
Hello, World!
>>>
Cela fonctionnera également sous 2.x si vous utilisez une chaîne unicode:
>>> my_str = u'123Hello, World!4567'
>>> output = ''.join(c for c in my_str if not c.isnumeric())
>>> print(output)
Hello, World!
>>>
Hmm. Jeter dans un trombone et nous aurions un épisode de MacGyver .
Je sais que cela a été fermé en tant que doublon, mais voici une méthode qui fonctionne à la fois pour Python 2 et Python 3:
>>> my_str = '123Hello, World!4567'
>>> output = ''.join(map(lambda c: '' if c in '0123456789' else c, my_str))
>>> print(output)
Hello, World!
>>>
Une autre méthode pour faire ce que vous demandez est d'ajouter des caractères d'une chaîne à une autre nouvelle chaîne vide à l'aide d'une boucle for. Un rappel amical que les chaînes sont immuables. Il s’agit d’une approche plus conviviale qui examine les résultats possibles de ce que ch peut être lors d’une itération.
def removeNumbersFromStrings(string):
newString = ""
for ch in string:
if ch == '0' or ch == '1' or ch == '2' or ch == '3' or ch == '4' or ch == '5' or ch == '6' or ch == '7' or ch == '8' or ch == '9':
newString = newString
else:
newString = newString + ch
return newString
Parfois, la façon la plus simple de faire quelque chose peut vraiment aider lors de la révision ultérieure de votre code, par exemple des mois plus tard, lorsque vous souhaiterez le modifier.