使用Python

时间:2016-11-10 14:38:07

标签: python python-2.7

我需要从输入文件中读取可变数量的列(列数由用户定义,没有限制)。对于每一列,我有多个要读取的变量,在我的情况下有三个,也由用户设置。

所以要阅读的文件就像:

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获得相同的结果?

2 个答案:

答案 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建议提高代码效率