Python正则表达式 - 多重搜索

0 投票
1 回答
544 浏览
提问于 2025-04-16 11:24

我想要实现的目标是:

  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'

如果我取消注释第二个搜索,一切就正常了。我不明白为什么会这样。

这个错误让我找到了这个stackoverflow问题这个问题,但都没有解决我的问题。

在这里我不在乎效率,所以我没有使用compile

1 个回答

2

假设 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 呢?

撰写回答