我有一个文本文件是一长串文本,我想分解成字典,我该怎么做?

时间:2016-08-02 17:03:56

标签: python python-3.x

我有一个看起来像这样的文本文件,其中以“Distance IQC / E:Distance XY”开头的行和其余的以下是一行,直到:END:

:BEGIN
"Distance IQC/E: Distance XY",0.09066,0.09060,0.00040,0.00040,0.00006,,"Distance IQC/F: Distance XY",0.14603,0.14590,0.00080,0.00080,0.00013,,"Distance IQC/G: Distance XY",0.12074,0.12070,0.00080,0.00080,0.00004,,"Distance IQC/I: Distance XY",0.21476,0.21600,0.00200,0.00200,-0.00124,,"Distance IQC/H: Distance XY",0.12714,0.12760,0.00080,0.00080,-0.00046,,"Distance IQC/N: Distance XY",0.08661,0.08690,0.00080,0.00080,-0.00029,,"Distance IQC/M: Distance XY",0.12997,0.13000,0.00080,0.00080,-0.00003,
:END

我想知道如何拆分此文本文件,以便每行以“距离”开头,然后是剩余的浮动符,直到下一个“距离”。

我可以使用file.replace(“:BEGIN”,“”)来摆脱Begin和End。

我是否要创建一个字典,然后将该字典重写为新的文本文件?

请帮助我是一个非常新的程序员!

编辑:我希望输出为:

Distance IQC/E: Distance XY 0.09066 0.09060 0.00040 0.00040 0.00006  
Distance IQC/F: Distance XY 0.14603 0.14590 0.00080 0.00080 0.00013  
Distance IQC/G: Distance XY 0.12074 0.12070 0.00080 0.00080 0.00004  
Distance IQC/I: Distance XY 0.21476 0.21600 0.00200 0.00200 -0.00124  
Distance IQC/H: Distance XY 0.12714 0.12760 0.00080 0.00080 -0.00046  
Distance IQC/N: Distance XY 0.08661 0.08690 0.00080 0.00080 -0.00029  
Distance IQC/M: Distance XY 0.12997 0.13000 0.00080 0.00080 -0.00003

这样我就可以将数据干净地存档到excel文件或类似文件中。

编辑2:

这是我到目前为止的一小段代码:

with open("file.txt","r") as read_data:
    f=read_data.read().replace(":BEGIN",'').replace(":END",'')

2 个答案:

答案 0 :(得分:0)

考虑到这是您的输入数据:

line = ':BEGIN\n"Distance IQC/E: Distance XY",0.09066,0.09060,0.00040,0.00040,0.00006,,"Distance IQC/F: Distance XY",0.14603,0.14590,0.00080,0.00080,0.00013,,"Distance IQC/G: Distance XY",0.12074,0.12070,0.00080,0.00080,0.00004,,"Distance IQC/I: Distance XY",0.21476,0.21600,0.00200,0.00200,-0.00124,,"Distance IQC/H: Distance XY",0.12714,0.12760,0.00080,0.00080,-0.00046,,"Distance IQC/N: Distance XY",0.08661,0.08690,0.00080,0.00080,-0.00029,,"Distance IQC/M: Distance XY",0.12997,0.13000,0.00080,0.00080,-0.00003,\n:END'

然后,正如你所说,你可以先摆脱BEGIN和END。

data = line.replace(':BEGIN\n', '')
data = line.replace(',\n:END', '')

然后使用两个逗号作为分隔符将其余数据拆分为行。

data_list = data.split(',,')

最后,您可以通过用逗号分隔每一行作为分隔符来创建字典。列表的第一个元素可以是键(在这种情况下包括引号)。对于该值,您可以将它们分组到列表中。

data_dict = dict()

for data_element in data_list:
    element_as_list = data_element.split(',')
    key = element_as_list[0]
    value = element_as_list[1:]

    data_dict[key] = value

答案 1 :(得分:0)

str = 'Distance IQC/E: Distance XY",0.09066,0.09060,0.00040,0.00040,0.00006,,"Distance IQC/F: Distance XY",0.14603,0.14590,0.00080,0.00080,0.00013,,"Distance IQC/G: Distance XY",0.12074,0.12070,0.00080,0.00080,0.00004,,"Distance IQC/I: Distance XY",0.21476,0.21600,0.00200,0.00200,-0.00124,,"Distance IQC/H: Distance XY",0.12714,0.12760,0.00080,0.00080,-0.00046,,"Distance IQC/N: Distance XY",0.08661,0.08690,0.00080,0.00080,-0.00029,,"Distance IQC/M: Distance XY",0.12997,0.13000,0.00080,0.00080,-0.00003,'

sub_str = str.split(',,')
temp_arr = []

for i in sub_str:
    temp_arr.append(i.split(','))

for i in temp_arr:
    str_i = ' '.join(i)
    print(str_i)

这可以解决问题。