2011-02-07 58 views
0

这里就是我试图完成:Python的正则表达式 - 多个搜索

  1. 使用Python机械化我打开一个网站
  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'

如果我取消第二搜索一切都很好。我不明白这种行为。

这样的错误将我重定向到this stackoverflow issuethis - 但无济于事 - 这些都不能解决我的问题。我不在乎效率,所以我不使用compile

+0

每个response.read()的未过滤结果是什么?我打赌第二次阅读没有回报你所期望的。 – cmaynard 2011-02-07 17:38:18

+0

你可以通过调用re.search两次来添加一些关于你正在尝试做的事情的细节吗?当前的示例代码没有意义。 – shang 2011-02-07 17:45:50

回答

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多次?