我有一个看起来像这样的文件:
NODE=SC-1,CPU=90
NODE=SC-1,MEM=10
NODE=SC-1,FS=80
NODE=SC-1,DIORead=30
NODE=SC-1,DIOWrite=40
NODE=SC-1,NTX=30
NODE=SC-1,NRX=40
NODE=SC-2,CPU=80
NODE=SC-2,MEM=10
NODE=SC-2,FS=80
NODE=SC-2,DIORead=30
NODE=SC-2,DIOWrite=40
NODE=SC-2,NTX=30
NODE=SC-2,NRX=40
如何解析文件并为节点SC-1创建一个字典,为节点SC-2创建一个字典,稍后我可以在程序中参考获取特定节点的特定值?
答案 0 :(得分:4)
from collections import defaultdict
d = defaultdict(dict)
for line in open('input_file','r'):
line = line.strip()
a,b = line.split(',')
node = a.split('=')[1]
key, value = b.split('=')
d[node][key] = value
答案 1 :(得分:0)
我相信你要解析这个文件&保留所有SC-*
作为键,其余的东西作为其值。如果键是重复的,则合并值。如果这是你正在寻找的东西,那么我手写了一些完全相同的代码 -
我先在,
然后在=
&获取密钥,如果密钥已经存在然后合并,则创建一个新条目。
def readFileIntoDict(fileHandle, dictName):
line = fileHandle.readline()
dictName = {}
while line:
key = line.split(',').split('=')[1]
if key in dictName:
dictName[key].append(line)
else:
dictName[key] = [line]
line = fileHandle.readline()
return dictName
如果我解释了你想要的东西,请纠正我。
答案 2 :(得分:0)
这是我的尝试(未经测试):
sc1 = {}
sc2 = {}
f = open("myfile", "r")
for line in f:
dict = None
for statement in line.split(','):
varname, value = statement.split('=')
if varname == 'NODE' and value == 'SC-1':
dict = sc1
elif varname == 'NODE' and value == 'SC-2':
dict = sc2
else:
dict[varname] = value
答案 3 :(得分:0)
您可以创建“2D”词典,即词典词典。
“外部”字典的键将是节点名称(例如“SC-1”,“SC-2”),值将是另一个带有键{CPU,MEM,FS,DIORead,DIOWrite的字典,NTX,NRX}。
像这样:outerDict = {}
for line in open('input', 'rb').readlines():
key = line.split(',')[0].split('=')[0]
key2, val = line.split(',')[1].split('=')
if outerDict.has_key(key):
outerDict[key][key2] = val
else:
outerDict[key] = {}
outerDict[key][key2] = val
答案 4 :(得分:0)
考虑到您的文件结构与上面的示例一致,这就是我要做的 -
import pprint
def read_file_into_dict(filename):
f = open(filename, 'r')
main_dict = {}
for line in f:
line = line.strip()
node_line, param_line = line.split(',')
node_name = node_line.split('=')[1]
param, value = param_line.split('=')
if main_dict.get(node_name):
main_dict[node_name][param] = value
else:
main_dict[node_name] = {param: value}
return main_dict
pprint.pprint(read_file_into_dict('sample.txt'))
这是输出 -
$ python sample.py
{'SC-1': {'CPU': '90',
'DIORead': '30',
'DIOWrite': '40',
'FS': '80',
'MEM': '10',
'NRX': '40',
'NTX': '30'},
'SC-2': {'CPU': '80',
'DIORead': '30',
'DIOWrite': '40',
'FS': '80',
'MEM': '10',
'NRX': '40',
'NTX': '30'}}