我有来自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)
但这也会产生相同的结果。非常感谢任何帮助。
答案 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?']