繁体   English   中英

如何在python中将文件的特定行读入二维数组

[英]How to read specific lines of a file into a 2d array in python

您好,我是一名化学博士学位的学生,正在“尝试”用python编写代码

我在下面有一个这样的输入文件,我将在其中读取

ITEM: TIMESTEP
20000000
ITEM: NUMBER OF ATOMS
2
ITEM: BOX BOUNDS pp pp pp
0 51.577
0 51.048
1.06653 47.9335
ITEM: ATOMS id type x y z
5 1 15.6042 48.7947 36.9084
27 1 18.4619 1.23863 36.2611
ITEM: TIMESTEP
20005000
ITEM: NUMBER OF ATOMS
2
ITEM: BOX BOUNDS pp pp pp
0 51.577
0 51.048
1.03417 47.9658
ITEM: ATOMS id type x y z
5 1 16.183 47.8777 37.7161
27 1 17.9296 50.8771 36.5807
...................

我想读取文件并提取到目前为止我用此代码处理过的数组的特定点

in_name = raw_input('Name of input: ')    
R_file = (open(in_name, 'r')) #readfile 
for j, line in enumerate(R_file):
    if j%11 == 10:

我将获得每次以27开头的行的参考。

但是,我似乎无法将一行附加到多维数组中。

我最终想要这样的浮点数组

[[27.00], [1.00], [17.9296], [50.8771],[36.5807]]

当我读完所有数据而不用担心正在读取的行时,我会做这样的事情

lines = [line.split() for line in R_file]

然后我将使用

for x in range(length):
    for y in range(len(lines[x])):
        lines[x][y]=float(lines[x][y])   

我如何一次只对一行执行类似line.split()的操作,然后将其附加到所需行的数组中?

开始循环浏览文件各行之前,应创建一个空列表。 然后,在有数据的循环的每次迭代中(我想在每11行集的最后一行吗?),像以前一样( .split() )将行拆分为它的组件。 我认为,此时将数据转换为浮点数更有意义。 最后,将这行新数据.append()到您在开始时声明的列表中。 这为您提供了数字列表的列表,即有效的二维数组。

像这样:

file_location = # wherever your data is
data = []
with open(file_location, 'r') as f:
    for index, line in enumerate(f):
        if index % 11 == 10:
            data_line = [float(num) for num in line.split()]
            data.append(data_line)

现在, data如下所示:

[[27.0, 1.0, 18.4619, 1.23863, 36.2611],
 [27.0, 1.0, 17.9296, 50.8771, 36.5807]]

附加说明:我已将with open(...) as f:构造。 如果您不熟悉它,那么基本上这是一种简写形式,可以使您不必在完成文件.close()关闭.close()文件。

暂无
暂无

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

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