Python拆分特定的nmap输出

时间:2017-07-03 19:06:27

标签: python regex

我有来自nmap的以下输出,我试图分成像nmap这样的部分,如下所示:

PORT | STATE | SERVICE | VERSION

输出如下:

2000/tcp  open  cisco-sccp?
3000/tcp  open  http           Apache httpd 2.2.3 ((CentOS))

我尝试使用string.split(),但它一直在给我自己的条目中的所有东西,所以我最终得到的是“Apache httpd 2.2.3((CentOS))”但我不能得到它,它一直把每个单词放在一个条目中。我甚至试过

re.split('\s+', string)

但这也会产生相同的结果。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

不是一般解决方案,但对于这个具体示例,我认为只需指定maxsplit即可:

In [7]: re.split(r'\s+', '3000/tcp  open  http           Apache httpd 2.2.3 ((CentOS))', 3)
Out[7]: ['3000/tcp', 'open', 'http', 'Apache httpd 2.2.3 ((CentOS))']

它告诉它分裂3次,但之后只剩下其余部分。

短线只是更短,没有4项:

In [8]: re.split(r'\s+', '2000/tcp  open  cisco-sccp?', 3)
Out[8]: ['2000/tcp', 'open', 'cisco-sccp?']