在python中使用dictionary解析跟踪文件

2024-09-28 23:14:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我将使用python解析一个跟踪文件。我读了我文件的每一行,我想把这一行加到字典里。在我用空格关键字分隔每一行并将每行的列添加到字典中之后,我打印结果。但问题是,我的值的顺序与跟踪文件中的顺序不同。在

换句话说,假设我的跟踪文件的第一行如下:

  • 0.1 1 2 cbr 1000-------2 1.0 2.0 0 0

我的代码如下:

global dics
dics = []
count = 0
line_dic = {}
with codecs.open("trace.tr", "r", "UTF8") as inputFile:
    inputFile=inputFile.readlines()
for line in inputFile:
    item = []
    item = line.split(" ");
    line_dic['event'] = item[0]
    line_dic['time'] = item[1]
    line_dic['from_node'] = item[2]
    line_dic['to_node'] = item[3]
    line_dic['pkt_type'] = item[4]
    line_dic['pkt_size'] = item[5]
    line_dic['flags'] = item[6]
    line_dic['fid'] = item[7]
    line_dic['srcadd'] = item[8]
    line_dic['dstadd'] = item[9]
    line_dic['seqnum'] = item[10]
    line_dic['pkti'] = item[11]

    dics.append(line_dic)
    print dics

print命令的结果是

^{pr2}$

如你所见,根据我的知识,第一项必须是事件。但这是'pkt_type': u'cbr'!在

我不知道是什么问题?在


Tags: 文件node字典顺序typeline关键字item
1条回答
网友
1楼 · 发布于 2024-09-28 23:14:39

我在代码中看到的一个问题是line_dic应该为每一行初始化(我将line_dic = {}移到for循环中)。否则,您将覆盖前面几行的字典。在

dics = []
count = 0

with codecs.open("trace.tr", "r", "UTF8") as inputFile:
    inputFile=inputFile.readlines()
for line in inputFile:
    item = line.split(" ");

    line_dic = {}

    line_dic['event'] = item[0]
    line_dic['time'] = item[1]
    line_dic['from_node'] = item[2]
    line_dic['to_node'] = item[3]
    line_dic['pkt_type'] = item[4]
    line_dic['pkt_size'] = item[5]
    line_dic['flags'] = item[6]
    line_dic['fid'] = item[7]
    line_dic['srcadd'] = item[8]
    line_dic['dstadd'] = item[9]
    line_dic['seqnum'] = item[10]
    line_dic['pkti'] = item[11]

    dics.append(line_dic)
print dics

那么,调用dics[3]['event']应该没有问题。你的口述不需要排序才能打电话。在

相关问题 更多 >