Python将文件读入2d lis

2024-04-19 05:43:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这样的txt文件:

1 3 4
5 5 6

我想把它的元素相应地解析成元组或列表。到目前为止,我能够逐行读取文件,但结果不是我想要的

    ins = open( "input.txt", "r" )
    array = []
    for line in ins:
        line = line.rstrip('\n')
        array.append( line )
    ins.close()
    print array

但是打印数组

['1 3 4', '5 5 6']

我想要的是

[[1, 3, 4], [5, 5, 6]]

有什么办法可以做到这一点吗?


Tags: 文件intxt元素列表forcloseinput
3条回答
with open("input.txt", "r") as file:
    result = [[int(x) for x in line.split()] for line in file]

如果我理解您的正确要求,那么您正在寻找str对象的^{}方法。您可能还想使用int类型来获取实际的数字,而不是字符串:

data = []
for line in ins:
    number_strings = line.split() # Split the line on runs of whitespace
    numbers = [int(n) for n in number_strings] # Convert to integers
    data.append(numbers) # Add the "row" to your list.
print(data) # [[1, 3, 4], [5, 5, 6]]

下面这一行也做了同样的事情,但更加紧凑和Python式的风格:

data = [[int(n) for n in line.split()] for line in ins]

最后,如果您真的想使用元组而不是列表,那么只需在内部列表中使用tuple类型即可:

data = [tuple(int(n) for n in line.split()) for line in ins]
print(data) # [(1, 3, 4), (5, 5, 6)]

一次班次:

[line.split() for line in ins]

如果要将项目转换为int,请随意执行以下操作:

[map(int, line.split()) for line in ins]

相关问题 更多 >