我需要从输入文件中读取可变数量的列(列数由用户定义,没有限制)。对于每一列,我有多个要读取的变量,在我的情况下有三个,也由用户设置。
所以要阅读的文件就像:
2 3 5
6 7 9
3 6 8
在Fortran中,这很容易做到:
DO 180 I=1,NMOD
READ(10,*) QARR(I),RARR(I),WARR(I)
NMOD由用户定义,以及示例中的所有值。所有这些都是要存储在存储器中的输入参数。通过这些我可以保存我需要的所有变量,我可以随时使用它,通过更改I索引来回忆它们。如何用Python获得相同的结果?
答案 0 :(得分:1)
示例文件'text'
capture
Python代码
2 3 5
6 7 9
3 6 8
data = []
with open('text') as file:
columns_to_read = 1 # here you tell how many columns you want to read per line
for line in file:
data.append(list(map(int, line.split()[:columns_to_read])))
print(data) # print: [[2], [6], [3]]
将包含一系列代表您的行的数组。
答案 1 :(得分:0)
from itertools import islice
with open('file.txt', 'rt') as f:
# default slice from row 0 until end with step 1
# example islice(10, 20, 2) take only row 10,12,14,16,18
dat = islice(f, 0, None, 1)
column = None # change column here, default to all
# this keep the list value as string
# mylist = [i.split() for i in dat]
# this keep the list value as int
mylist = [[int(j) for j for i.split()[:column] for i in dat]
以上代码构造2d列表
使用mylist [row] [column]
进行访问示例 - mylist [2] [3]访问第2行第3列
修改:使用@Guillaume @Javier建议提高代码效率