Анализатор Python для извлечения пары ключ-значение из вывода - PullRequest
1 голос
/ 05 октября 2011

Я только начал с 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

Любая помощь или указатель для достижения этого будет высоко ценится.

1 Ответ

0 голосов
/ 05 октября 2011

Это примерно то, что вы хотите:

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, а затем отфильтровать нужные вам клавиши.

Обратите внимание, что ваш ключ 'disk' должен быть 'size'.

...