Python搜索在forloop内缩小结果

2024-06-09 22:42:02 发布

您现在位置:Python中文网/ 问答频道 /正文

为了帮助我学习python的基础知识,我正在编写一个脚本,它将在每次发布新的RedHat内核勘误表时自动启动帮助台问题单。

到目前为止,我可以创建一个所有勘误表的列表,每个勘误表都在自己的行上,作为一个多行变量。我希望下一步能够在勘误表的完整列表中搜索字符串中有“kernel”的项,而将变量缩小到只有这些结果是我遇到问题的地方。我基本上可以找到“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”,并在找到匹配项时指示某种类型的指针,而不是打印匹配的行:

^{pr2}$

谢谢!


Tags: inimportre列表fordatamatchline
1条回答
网友
1楼 · 发布于 2024-06-09 22:42:02

你要找的是:

    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是一个match对象,它包含一些有用的信息,例如匹配发生在什么位置。如果只想打印匹配行,请使用print line。在

相关问题 更多 >