2013-06-24 23 views
0

为了帮助我学习python的基础知识,我正在研究一个脚本,每次发布新的RedHat内核勘误时都会自动启动帮助台凭单。for循环中的Python re.search缩小结果

到目前为止,我可以创建一个所有勘误表,每个勘误表都在自己的行上,作为多行变量。我希望接下来能够在完整的勘误列表中搜索字符串中具有“内核”的项目,并将变量缩小到只有那些结果是我遇到问题的地方。我基本上可以找到'内核'的所有匹配,但不是返回匹配,而是注意到找到了匹配。例如:

import re 
import datetime 
import urllib 
from BeautifulSoup import BeautifulSoup 

errata = 'http://rhn.redhat.com/errata/rhel-server-6-errata.html' 

errata_data = urllib.urlopen(errata) 
soup = BeautifulSoup(errata_data) 

for syn in soup.findAll(attrs={'id' : re.compile("^synopsis")}): 
     for line in syn: 
       match = re.search("kernel", line, re.MULTILINE) 
       print match 

...导致“无”为不匹配的线条,和某种形式的指针来表示,当它找到一个匹配,而不是打印匹配行:

None 
None 
<_sre.SRE_Match object at 0x3f0ed30> 
None 
None 
None 

谢谢!

+0

你是什么意思,你想打印“比赛”?你想打印该行吗? –

回答

0

什么你要找的是:

for line in syn: 
     match = re.search("kernel", line, re.MULTILINE) 
     if match: # gets rid lines that don't match, which return `None` 
      print line 

match匹配对象,它包含了一些有用的信息,如发生在什么位置了这场比赛的。如果您只想打印匹配的行,请使用print line

+0

感谢大卫,这解决了我的问题。 – user132791

+1

@ user132791:当然。请注意,您可以通过点击旁边的绿色复选标记来将答案标记为已接受。 –