2016-08-02 89 views
-1

我有一个文本文件,它看起来像这样,在启动线“距离IQC/E:距离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”,“”)来摆脱开始和结束。

我要制作字典,然后将该字典重写为新的文本文件吗?

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

编辑:我希望可以将输出为:

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",'') 
+1

你应该阅读一下[mcve]是什么 - 如果你想要代码,你需要向我们展示你到目前为止的内容,以及哪些内容不起作用。也可能需要包含您所需的输出。 –

+0

你想要钥匙是什么?你想要什么值?请提供您的预期输出的例子。 – IanAuld

+0

不需要一个字典来插入换行符:'astr = big_str.replace(“Distance”,“\ nDistance”)' – cdarke

回答

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 
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) 

这样就解决了问题。

相关问题