簡體   English   中英

Python解析器從輸出中提取鍵值對

[英]Python parser to extract keyvalue pair from a output

我剛開始使用python,並且習慣於從文本輸出中提取數據。 文本輸出采用文本塊的形式,並具有鍵值對

status active
name server01
read:bytes 4096
user abcd-12345-def
drive hgbcv-76s7e-hwte7ehxd-22byt82h
write:bytes 4096
read:requests 1
type disk
write:requests 1
size 1099511627776
status active
name server02
read:bytes 4096
user abcd-12345-def
drive ngcdha6-76eg-78q7dg73-76eydh
write:bytes 4096
read:requests 1
type disk
write:requests 1
size 1099511627776

我需要解析每個塊並將輸出顯示為

status,name,drive,type,disk

因此對於上面的示例,我應該能夠將輸出作為

active,server01,hgbcv-76s7e-hwte7ehxd-22byt82h,disk,1099511627776
active,server02,ngcdha6-76eg-78q7dg73-76eydh,disk,1099511627776

任何幫助或指針,以實現這一目標將不勝感激。

謝謝

這大概是您想要的:

def create_dict(lines):
    return dict(line.split(" ") for line in lines)

lines1 = [
    "status active",
    "name server01",
    "read:bytes 4096",
    "user abcd-12345-def",
    "drive hgbcv-76s7e-hwte7ehxd-22byt82h",
    "write:bytes 4096",
    "read:requests 1",
    "type disk",
    "write:requests 1",
    "size 1099511627776",
]
lines2 = [
    "status active",
    "name server02",
    "read:bytes 4096",
    "user abcd-12345-def",
    "drive ngcdha6-76eg-78q7dg73-76eydh",
    "write:bytes 4096",
    "read:requests 1",
    "type disk",
    "write:requests 1",
    "size 1099511627776",
]

d1 = create_dict(lines1)
d2 = create_dict(lines2)

keys = ("status","name","drive","type","size")
for d in (d1, d2):
    print ",".join(d[key] for key in keys)

這是我得到的輸出:

>>> for d in (d1, d2):
...     print ",".join(d[key] for key in keys)
... 
active,server01,hgbcv-76s7e-hwte7ehxd-22byt82h,disk,1099511627776
active,server02,ngcdha6-76eg-78q7dg73-76eydh,disk,1099511627776

您需要找出一種方法來將相關行放在一起,以調用create_dict ,然后可以過濾所需的鍵。

請注意,密鑰“磁盤”應為“大小”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM