2010-08-18 3 views
2

У меня есть список слов, построенных из разных HTML-страниц. Вместо того, чтобы писать правило после правила, чтобы разделить разные элементы, я пытаюсь пройти через список и сказать, если это не полное слово только с альфа-символами, просто двигайтесь дальше. Это не работает.Как найти только целые слова, используя re.search?

for w in words: 
    if re.search('\b[a-zA-Z]\b', w) == None: 
      continue 

Я ужасно с регулярными выражениями (если вы не можете уже сказать!), Так что я мог бы использовать некоторую помощь. Как бы я написал его, чтобы он проверял каждый w, чтобы убедиться, что в нем есть только a-zA-Z?

ответ

3

Вы почти у цели. Вы просто должны указать, что ваш поиск соответствует целой строке из 1 или более символов.

for w in words: 
    if re.search('^[a-zA-Z]+$', w) == None: 
      continue 

Другое решение (для этого конкретного случая по крайней мере) будет использовать isalpha();

for w in words: 
    if not w.isalpha(): 
      continue 
+0

В вашем втором решении есть опечатка, но я согласен, что он лучше подходит для представленной проблемы. Здесь нет необходимости использовать регулярное выражение. – Andrew

+0

@ Андрей: спасибо, я исправил опечатку. – Wolph

+0

Спасибо. Оба работают чудесно. Я думаю, что пришло время подбирать книгу питона. Мне нужно много учиться. – Nathan

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