我有一个看起来像这样的文本文件,其中以“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",'')
答案 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)
这可以解决问题。