为了帮助我学习python的基础知识,我正在开发一个脚本,每次发布一个新的RedHat内核勘误表时,它会自动启动一个帮助台票。
到目前为止,我可以创建一个所有勘误的列表,每个勘误都在它自己的行上,作为一个多行变量。我希望接下来能够在完整的勘误列表中搜索字符串中包含'kernel'的项目,并将变量缩小到那些结果就是我遇到问题的地方。我基本上可以找到'内核'的所有匹配但不是返回匹配,它只是注意到找到了一个匹配。例如:
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
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
。