繁体   English   中英

从文件中解析数据并存储在数组中

[英]Parsing data from file and storing in an array

我正在尝试从其中包含两组数据的文件中解析数据。 该文件具有文件的前40行的标题信息,然后是两行数据的1000行。 附加文件已以相同格式附加到文件中。 也就是说,第1041至1081行具有第二个文件的标题信息,后跟两行数据的1000行。 这两部分数据的第一列是相同的。 因此,我想解析数据文件以删除标题部分并将数据保存到3x1000数组中。

该文件的组织方式为:

第1行://标题信息

第2行://标题信息

...

40行:1.000e3 -4.000e-3

第41行:1.001e3 -4.324e-3

...

第1000行:10.000e3 -78.678e-3

第1001行://标头信息

第1002行://标头信息

1041行:1.000e3 -16.000e-3

第41行:1.001e3 -14.324e-3

...

2000行:10.000e3 -22.178e-3

我想解析列数据并输出到以下格式的数组

[1.000e3,-4.000e-3,-16.000e-3]

[1.001e3,-4.432e-3,-14.423e-3]

...

[10.00e3。 -78.678e-3,-22.178e-3]

我已经尝试了以下操作:DATA = [[xrange(3)中x的0]对于xrange(10000)中的x]

为我排序(os.listdir('。')):

for lines in range(0, 39):
        dataFile.readline()

for lines in range(0, 10000):
        readData = dataFile.readline()
        dataLine = readData.split()
        DATA[0].append(dataLine[0])
        DATA[1].append(dataLine[1])

for lines in range(0, 39):
        dataFile.readline()

for lines in range(0, 10000):
        readData = dataFile.readline()
        dataLine = readData.split()
        DATA[2].append(dataLine[1])

dataFile.close()

感谢您的帮助。

from itertools import islice
def get_headers_and_columns(fhandle):
   return list(islice(fhandle,0,40)),zip(*map(str.split,islice(fhandle,0,1000)))

with open("input.txt") as f_in,open("output.txt","w") as f_out:
    headers, columns = get_headers_and_columns(f_in)
    headers2, columns2 = get_headers_and_columns(f_in)
    columns.append(columns2[-1])
    f_out.write("\n".join(map(" ".join,zip(*columns)))

是您可以完成此操作的一种方式...至少我认为这会起作用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM