gpt4 book ai didi

python - 从字符串 pandas python 创建一个数据框

转载 作者:太空宇宙 更新时间:2023-11-04 07:04:53 26 4
gpt4 key购买 nike

我正在创建一个程序来列出 LAN 中连接的 IP 地址和用户。我通过使用 nmap 获取数据来完成。接下来我想使用 pandas 或任何其他方式将结果数据更改为某个数据框。怎么做。

代码如下:

import pandas as pd
import subprocess
from subprocess import Popen, PIPE
import re

def ipget():
i = 'nmap -sP 192.168.1.*'
output = subprocess.getoutput(i)
a = str(output).replace("Nmap","").replace("Starting 7.01 ( https://nmap.org ) at","").replace("scan report for","").replace("Host is up","").replace("latency","").replace("done: 256 IP addresses ","")
data = re.sub(r"(\(.*?\)\.)", "", a)
print(data)
#df = pd.DataFrame(data, columns = ['User', 'IP_Address'])

#print (df)
ipget()

存储在数据中的输出,它是一个字符串:

2019-05-21 18:19 IST 
android-eb20919729f10e96 (192.168.1.8)

smackcoders (192.168.1.9)

princes-mbp (192.168.1.10)

shiv-mbp (192.168.1.15)

(4 hosts up) scanned in 18.35 seconds

需要在数据框中创建的输出:

User                            IP_Address
android-eb20919729f10e96 192.168.1.8
smackcoders 192.168.1.9
princes-mbp 192.168.1.10
shiv-mbp 192.168.1.15

最佳答案

说你有文字:

2019-05-21 18:19 IST 
android-eb20919729f10e96 (192.168.1.8)

smackcoders (192.168.1.9)

princes-mbp (192.168.1.10)

shiv-mbp (192.168.1.15)

(4 hosts up) scanned in 18.35 seconds

使用正则表达式查找您需要的数据:

>>> ms = re.findall(r'\n([^\s]*)\s+\((\d+\.\d+\.\d+\.\d+)\)', text)
>>> ms

[('android-eb20919729f10e96', '192.168.1.8'),
('smackcoders', '192.168.1.9'),
('princes-mbp', '192.168.1.10'),
('shiv-mbp', '192.168.1.15')]

>>> df = pd.DataFrame(ms, columns=['User', 'IP_Address'])

与其他答案的比较:

  1. 正则表达式很短。
  2. 正则表达式只在您的文本中运行一次

str.replace 每次调用运行一次,因此正则表达式解决方案对于长日志可以获得巨大的效率。

关于python - 从字符串 pandas python 创建一个数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56239745/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com