2013-08-06 16 views
6

Próbuję utworzyć wyrażenie regularne w języku Python, które pozwala mi usunąć wszystkie światy ciągu zawierającego liczbę.Python regex usuwa wszystkie wyrazy zawierające numer

Na przykład:

in = "ABCD abcd AB55 55CD A55D 5555" 
out = "ABCD abcd" 

regex dla Usuń numer jest trywialne:

print(re.sub(r'[1-9]','','Paris a55a b55 55c 555 aaa')) 

Ale nie wiem jak usunąć cały wyraz, a nie tylko numer.

Czy możesz mi pomóc?

Odpowiedz

14

Potrzebujesz wyrazy regularne? Można zrobić coś takiego

>>> words = "ABCD abcd AB55 55CD A55D 5555" 
>>> ' '.join(s for s in words.split() if not any(c.isdigit() for c in s)) 
'ABCD abcd' 

Jeśli naprawdę chcesz, aby użyć wyrażenia regularnego, można spróbować \w*\d\w*:

>>> re.sub(r'\w*\d\w*', '', words).strip() 
'ABCD abcd' 
+0

euuh no nie muszę naprawdę regex, nie wiem, dlaczego jestem na nim naprawiony^^
Twoje 2 odpowiedzi działają dobrze, dziękuję bardzo :) –

+0

Polecenie regex nie zadziałało dla mnie –

7

Oto moje podejście:

>>> import re 
>>> s = "ABCD abcd AB55 55CD A55D 5555" 
>>> re.sub("\S*\d\S*", "", s).strip() 
'ABCD abcd' 
>>> 
+0

Działa również dobrze, dzięki –

Powiązane problemy