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

时间:2015-05-04 23:41:56

标签: python parsing dynamic-arrays

我正在尝试解析包含两组数据的文件中的数据。该文件包含文件前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]

我尝试过以下方法: 对于xrange(10000)中的x,DATA = [[0表示x格式(3)]]

排序中的

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

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

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

是你可以实现这一目标的一种方式......至少我认为这样可行