【发布时间】:2018-07-31 05:34:36
【问题描述】:
f是一个文件,如下图:
+++++192.168.1.1+++++
Port Number: 80
......
product: Apache httpd
IP Address: 192.168.1.1
+++++192.168.1.2+++++
Port Number: 80
......
product: Apache http
IP Address: 192.168.1.2
+++++192.168.1.3+++++
Port Number: 80
......
product: Apache httpd
IP Address: 192.168.1.3
+++++192.168.1.4+++++
Port Number: 3306
......
product: MySQL
IP Address: 192.168.1.4
+++++192.168.1.5+++++
Port Number: 22
......
product: Open SSH
IP Address: 192.168.1.5
+++++192.168.1.6+++++
Port Number: 80
......
product: Apache httpd
IP Address: 192.168.1.6
预期的输出是:
These hosts have Apache services:
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.6
我试过的代码:
for service in f:
if "product: Apache httpd" in service:
for host in f:
if "IP Address: " in host:
print(host[5:], service)
它只是给了我所有的 IP 地址,而不是安装了 Apache 的特定主机。
我怎样才能得到预期的输出?
【问题讨论】:
-
什么是
f?你打开的文件? -
当你的文件 sn-p 中没有这样的字符串时,你为什么要检查
"IP Address: "字符串是否包含在行中? -
@AzatIbrakov 抱歉打错了。我已经编辑了帖子。
-
您正在以嵌套方式迭代相同的变量
f。这没有意义。 -
有时输入有“product: Apache http”,有时有“... httpd”。您只匹配“... httpd”。