2016-02-02 1 views
0
for word in wordlist: 
     re.findall(r'^[^\d]', word) 
     # i want to return same word IF it does not have a digit in it 
     #add word to newlist and count+=1 
print newlist 
+0

для списков исключений, вы можете попробовать использовать диапазон символов, чтобы исключить, то есть [^ 0-9 ] –

ответ

0

Вы можете легко отфильтровать то, что не цифра, сопоставляя его к цифре, которая легко регулярное выражение ^\d$:

for word in words: 
    if not re.match(r'^\d$', word): 
     print word 

запустить его на: words = ['1', 'asds', 'sd4dsd', '234'] печать последние три элемента, которые действительно являются элементами, которые являются , а не одной цифрой.

, если вы хотите, чтобы отфильтровать любой маркер, который содержит цифру (в приведенном выше примере - печатать только «ASDs») изменить регулярное выражение: .*\d.*

+0

Хорошо, отлично! На самом деле все были отличными ответами. Я думаю, что мне нужно было «. * \ D. *, Чтобы получить полное отфильтрованное слово, если в нем было число. Я хочу вернуть каждую строку без изменений, если у нее нет номера :) Спасибо за помощь! :) –

1

Вы можете использовать список понимание с re.match:

new_list = [word for word in wordlist if re.match(r'^[^\d]+$',word)] 

И получить счетчик с вызовом len() на new_list.

Пример:

>>> wordlist = ['example1', 'ex43', 'foo', 'bar5', 'baz'] 
>>> [word for word in wordlist if re.match(r'^[^\d]+$',word)] 
['foo', 'baz'] 
+0

он не хочет фильтровать любое число, только цифры или, по крайней мере, это мое понимание (извините, если я нарушаю ong здесь) – alfasin

+0

@alfasin Я так не думаю, из-за этой части * ЕСЛИ она не имеет цифры в ней. * – Kasramvd

+1

Действительно, это сбивает с толку ... - убрал нижний план и исправил. – alfasin

0

Подобно alfasin, вы можете перебирать список, добавив, каждое слово, которое не содержит цифру, добавить его в список, а затем вернуть этот список:

def no_digits(lst): 
    no_digit_lst = [] 
    for word in lst: 
     if not re.match(r'^\d$', word): 
      no_digit_lst.append(word) 
    return no_digit_list 

print(no_digits(wordlist)) 
Смежные вопросы