我从子流程命令中以字符串形式接收了数据。我想使用字典理解将数据存储在嵌套字典中。我该怎么做呢?注意:每个子流程命令的表行和列将有所不同。
这只是一个例子:(我已经从子进程中将其作为字符串返回了。)
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 140.7M 1 loop /snap/gnome-3-26-1604/82
loop1 7:1 0 89.3M 1 loop /snap/core/6673
sda 8:0 0 11G 0 disk
├─sda1 8:1 0 10.9G 0 part /
├─sda14 8:14 0 4M 0 part
└─sda15 8:15 0 106M 0 part /boot/efi
这是我想要的输出:
{block device 1:
{ "name" : value,
"maj:min" : value,
"RM" : value,
"SIZE" : value,
"RO": value,
"TYPE": value,
"MOUNTPOINT" : value},
block device 2:
{ "name" : value,
"maj:min" : value,
"RM" : value,
"SIZE" : value,
"RO": value,
"TYPE": value,
"MOUNTPOINT" : value},
...
}
这是我用来对此进行排序的方法(我知道这很讨厌)。
def multiple_column_dict(a_string, cat):
lines = re.split("\n", a_string)
keys = re.split(" +", lines[0])
values1 = re.split(" +", lines[1])
values2 = re.split(" +", lines[2])
values3 = re.split(" +", lines[3])
values4 = re.split(" +", lines[4])
values5 = re.split(" +", lines[5])
values6 = re.split(" +", lines[6])
a_dict1 = dict(zip(keys, values1))
a_dict2 = dict(zip(keys, values2))
a_dict3 = dict(zip(keys, values3))
a_dict4 = dict(zip(keys, values4))
a_dict5 = dict(zip(keys, values5))
a_dict6 = dict(zip(keys, values6))
答案 0 :(得分:1)
您可以使用
# -*- coding: utf-8 -*-
data = """
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 140.7M 1 loop /snap/gnome-3-26-1604/82
loop1 7:1 0 89.3M 1 loop /snap/core/6673
sda 8:0 0 11G 0 disk
├─sda1 8:1 0 10.9G 0 part /
├─sda14 8:14 0 4M 0 part
└─sda15 8:15 0 106M 0 part /boot/efi
"""
header = ["NAME", "MAJ:MIN", "RM", "SIZE", "RO", "TYPE", "MOUNTPOINT"]
result = [dict(zip(header, values))
for line in data.split("\n")[2:]
if line
for values in [line.split()]]
print(result)
哪个会产生
[
{'NAME': 'loop0', 'MAJ:MIN': '7:0', 'RM': '0', 'SIZE': '140.7M', 'RO': '1', 'TYPE': 'loop', 'MOUNTPOINT': '/snap/gnome-3-26-1604/82'},
{'NAME': 'loop1', 'MAJ:MIN': '7:1', 'RM': '0', 'SIZE': '89.3M', 'RO': '1', 'TYPE': 'loop', 'MOUNTPOINT': '/snap/core/6673'},
{'NAME': 'sda', 'MAJ:MIN': '8:0', 'RM': '0', 'SIZE': '11G', 'RO': '0', 'TYPE': 'disk'},
{'NAME': '├─sda1', 'MAJ:MIN': '8:1', 'RM': '0', 'SIZE': '10.9G', 'RO': '0', 'TYPE': 'part', 'MOUNTPOINT': '/'},
{'NAME': '├─sda14', 'MAJ:MIN': '8:14', 'RM': '0', 'SIZE': '4M', 'RO': '0', 'TYPE': 'part'},
{'NAME': '└─sda15', 'MAJ:MIN': '8:15', 'RM': '0', 'SIZE': '106M', 'RO': '0', 'TYPE': 'part', 'MOUNTPOINT': '/boot/efi'}
]
在这里,我们生成了一个字典列表。