Python regex - множественный поиск - PullRequest
0 голосов
/ 07 февраля 2011

Вот что я пытаюсь сделать:

  1. Используя python mechanize, я открываю сайт
  2. Если содержимое не соответствует моему регулярному выражению, я открываю другой сайт
  3. Я выполняю поиск, используя другое регулярное выражение

И извлеченный код:

m = re.search('<td>(?P<alt>\d+)', response.read())
...
m = re.search('<td>(?P<alt>\w+)', response.read())
print m.group('alt')

Я получаю:

AttributeError: 'NoneType' object has no attribute 'group'

Если я раскомментирую при втором поиске все нормально. Я не понимаю этого поведения.

Такая ошибка перенаправила меня на эту проблему переполнения стека и на эту - но безрезультатно - ни один из них не решил мою проблему.

Мне здесь наплевать на эффективность, поэтому я не использую compile.

1 Ответ

2 голосов
/ 07 февраля 2011

Предполагая, что response является файловым объектом, вызов read во второй раз может вернуть пустую строку, поскольку вы использовали файл ранее.

data = response.read()
m = re.search('<td>(?P<alt>\d\d*)', data)
m = re.search('<td>(?P<alt>\d\d*)', data)
print m.group('alt')

Зачем вам звонить search несколько раз?

...