2013-08-06 4 views
6

Я пытаюсь создать регулярное выражение Python, которое позволяет мне удалить все миры строки, содержащей число.Python regex, чтобы удалить все слова, содержащие номер

Например:

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

Регулярное выражение для удаления числа тривиальна:

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

Но я не знаю, как удалить слово целиком, а не только количество.

Не могли бы вы помочь мне, пожалуйста?

ответ

14

Вам нужно регулярное выражение? Вы можете сделать что-то вроде

>>> 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' 

Если вы действительно хотите использовать регулярное выражение, вы можете попробовать \w*\d\w*:

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

euuh нет мне не нужно на самом деле regex, я не знаю, почему я исправлен на нем ^^
Ваши 2 ответа отлично работают, поэтому спасибо вам большое :) –

+0

Команда regex did not work for me –

7

Вот не мой подход:

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

Он отлично работает, спасибо –

Смежные вопросы