打印包含“word”python的行

时间:2012-12-16 20:16:39

标签: python pattern-matching match

我想在下面的输出中只打印包含“Server”的行:

Date: Sun, 16 Dec 2012 20:07:44 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
Set-Cookie: PREF=ID=da8d52b67e5c7522:FF=0:TM=1355688464:LM=1355688464:S=CrK5vV-qb3UgWUM1; expires=Tue, 16-Dec-2014 20:07:44 GMT; path=/; domain=.google.com
Set-Cookie: NID=67=nICkwXDM6H7TNQfHbo06FbvZhO61bzNmtOn4HA71ukaVDSgywlBjBkAR-gXCpMNo1TlYym-eYMUlMkCHVpj7bDRwiHT6jkr7z4dMrApDuTk_HuTrZrkoctKlS7lXjz9a; expires=Mon, 17-Jun-2013 20:07:44 GMT; path=/; domain=.google.com; HttpOnly
P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
Server: gws
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Connection: close

此信息来自名为websiteheaders的列表。我有下面的代码,这让我发疯,因为它无法正常工作......

for line in websiteheaders:
    if "Server" in line:
        print line

现在,上面这段代码打印的内容与我在帖子开头描述的文本块完全相同。我只是不明白为什么会这样做......

正如我所说,我只想打印包含“Server”的行,如果可能的话没有正则表达式。如果不可能,使用正则表达式。

请帮助和谢谢!

编辑:到目前为止,我的完整代码已粘贴在此处:http://pastebin.com/sYuZyvX9 EDIT2:为了完整性,在hosts.txt中当前有1个名为“google.com”的主机

更新

我的代码实际上运行正常,但我的代码中的另一部分确实存在错误,这确保放入列表网站标题的数据是1个大字符串而不是多个条目。在上面的代码中,它会找到“Server”并打印整个条目,在我的例子中是完整的(大)字符串。

使用

websiteheaders.extend(headers.splitlines())

而不是

websiteheaders.append(头)

为我做了诀窍。非常感谢你们。

2 个答案:

答案 0 :(得分:8)

websiteheaders真的是一个被分割为非常行的列表吗?因为如果它是一个字符串你应该使用:

for line in websiteheaders.splitlines():
    if "Server" in line:
        print line

另外,一个很好的提示:我建议添加一些print - 语句来解决这类问题。如果您要添加以下内容:

else:
    print 'WRONG LINE:', line

你可能会发现这个循环没有循环遍历每一行而是遍历每个角色。

更新

我不知道你的代码有什么问题。这就是我得到的:

In [3]: websiteheaders
Out[3]: 
['Date: Sun, 16 Dec 2012 20:07:44 GMT',
 'Expires: -1',
 'Cache-Control: private, max-age=0',
 'Content-Type: text/html; charset=ISO-8859-1',
 'Set-Cookie: PREF=ID=da8d52b67e5c7522:FF=0:TM=1355688464:LM=1355688464:S=CrK5vV-qb3UgWUM1; expires=Tue, 16-Dec-2014 20:07:44 GMT; path=/; domain=.google.com',
 'Set-Cookie: NID=67=nICkwXDM6H7TNQfHbo06FbvZhO61bzNmtOn4HA71ukaVDSgywlBjBkAR-gXCpMNo1TlYym-eYMUlMkCHVpj7bDRwiHT6jkr7z4dMrApDuTk_HuTrZrkoctKlS7lXjz9a; expires=Mon, 17-Jun-2013 20:07:44 GMT; path=/; domain=.google.com; HttpOnly',
 'P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."',
 'Server: gws',
 'X-XSS-Protection: 1; mode=block',
 'X-Frame-Options: SAMEORIGIN',
 'Connection: close"']

In [4]: for line in websiteheaders:
   ...:     if 'Server' in line:
   ...:         print line
   ...:         
Server: gws

答案 1 :(得分:1)

for single_line in websiteheaders.splitlines():
    if `Server` in single_line:
        print single_line