#python #parsing #text
#python #синтаксический анализ #текст
Вопрос:
Я только начал с python и столкнулся с извлечением данных из текстового вывода. Вывод текста осуществляется в виде текстовых блоков и имеет пары значений ключей
статус активное имя server01 чтение: 4096 байт пользователя abcd-12345-def drive hgbcv-76s7e-hwte7ehxd-22byt82h запись: 4096 байт чтение: запросы 1 типа запись на диск: запросы 1 размера 1099511627776
статус активное имя server02 чтение: 4096 байт пользователя abcd-12345-def диск ngcdha6-76eg-78q7dg73-76eydh запись: 4096 байт чтение: запросы 1 типа запись на диск: запросы 1 размера 1099511627776
Мне нужно проанализировать каждый блок и отобразить вывод как просто
статус, имя, диск, тип, диск
итак, для приведенного выше примера я должен иметь возможность получить вывод в виде
активный, server01, hgbcv-76s7e-hwte7ehxd-22byt82h, диск, 1099511627776 активный, server02, ngcdha6-76eg-78q7dg73-76eydh, диск, 1099511627776
Любая помощь или указатель для достижения этой цели будут высоко оценены.
Спасибо
Комментарии:
1. Итак, было ли это полезно для вас? Что произошло?
Ответ №1:
Это примерно то, что вы хотите:
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
а затем вы можете отфильтровать нужные ключи.
Обратите внимание, что ваш ключ «диск» должен быть «размером».