我相信這是一個 3 步程序,但請多多包涵。我目前正在讀取正在保存到檔案中的 Shell 輸出,輸出如下所示:
電流輸出:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 123.345.789:1234 0.0.0.0:* LISTEN 23044/test
tcp 0 0 0.0.0.0:5915 0.0.0.0:* LISTEN 99800/./serv
tcp 0 0 0.0.0.0:1501 0.0.0.0:* LISTEN -
我正在嘗試根據標題值訪問每列資訊。這是我在 Powershell 中能夠做到的,但不確定如何在 Python 中實作。
預期輸出:
Proto,Recv-Q,Send-Q,Local Address,Foreign Address,State,PID/Program name
tcp,0,0,123.345.789:1234,0.0.0.0:*,LISTEN,23044/test
tcp,0,0,0.0.0.0:5915,0.0.0.0:*,LISTEN,99800/./serv
tcp,0,0,0.0.0.0:1501,0.0.0.0:*,LISTEN,-
proto = data["Proto"]
for p in proto:
print(p)
輸出:tcp tcp tcp
我試過什么?:
我從哪里開始.. 我嘗試過拆分、替換和翻譯。另外,我確實嘗試過正則運算式,但無法弄清楚:/
Proto,Recv-Q,Send-Q,Local,Address,,,,,,,,,,,Foreign Address,,,,,,,,,State,,,,,, PID/Program,name
tcp,,,,,,,,0,,,,,,0 123.345.789:1234,,,,,,,,0.0.0.0:*,,,,,,,,,,,,,,,LISTEN,,,,,,23021/java,,,,,,,,
tcp,,,,,,,,0,,,,,,0 0.0.0.0:5915,,,,,,,,,,,,0.0.0.0:*,,,,,,,,,,,,,,,LISTEN,,,,,,99859/./statserv
tcp,,,,,,,,0,,,,,,0 0.0.0.0:1501,,,,,,,,,,,,0.0.0.0:*,,,,,,,,,,,,,,,LISTEN,,,,,,-
由于某些標題在它們之間包含一個空格,因此很難相應地映射列。
尋找解決此問題的最佳方法。
謝謝你。
uj5u.com熱心網友回復:
您正在對netstat命令的輸出進行后處理。 netstat本身只是重新格式化中的資訊/proc/net/tcp,您也可以閱讀。與netstat輸出一樣,您可能需要制作自己的標題行,但資料行都是空格分隔的。一個簡單的line.split()應該做到這一點。
如果您仍然想使用netstat,就像我說的那樣,只需扔掉標題行并使用split. 你知道列是什么。
for ln in output:
fields = ln.split()
print( ','.join(fields) )
uj5u.com熱心網友回復:
跳過第一行,表示沒有標題,分配標題名稱,然后拆分一個或多個空格。
df = pd.read_csv('netstat.txt', skiprows=1, header=None, sep='\s ',
names=['cv-Q','Send-Q','Local Address','Foreign Address','State','PID/Program name'])
print(df)
Proto cv-Q Send-Q Local Address Foreign Address State PID/Program name
0 tcp 0 0 123.345.789:1234 0.0.0.0:* LISTEN 23044/test
1 tcp 0 0 0.0.0.0:5915 0.0.0.0:* LISTEN 99800/./serv
2 tcp 0 0 0.0.0.0:1501 0.0.0.0:* LISTEN -
df.to_csv('output.csv', index=None)
uj5u.com熱心網友回復:
使用正則運算式基于具有兩個或多個空格的字串進行拆分。
for ln in testset:
splitted = re.split(r'\s{2,}', ln.replace("\n", ""))
print(splitted)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/493226.html
標籤:Python python-3.x 熊猫
上一篇:如何在熊貓中將列屬性切換為行屬性
