首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python将文件读入2d列表

Python将文件读入2d列表
EN

Stack Overflow用户
提问于 2014-01-20 15:47:22
回答 9查看 20.2K关注 0票数 3

我有这样一个txt文件:

代码语言:javascript
复制
1 3 4
5 5 6

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

代码语言:javascript
复制
    ins = open( "input.txt", "r" )
    array = []
    for line in ins:
        line = line.rstrip('\n')
        array.append( line )
    ins.close()
    print array

但是,打印我得到的数组

代码语言:javascript
复制
['1 3 4', '5 5 6']

我想要的是

代码语言:javascript
复制
[[1, 3, 4], [5, 5, 6]]

有办法做到这一点吗?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2014-01-20 15:50:31

如果我正确地理解了您所要求的内容,那么您将寻找str对象的str方法。您可能还希望使用int类型来获取实际数字,而不是字符串:

代码语言:javascript
复制
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]]

下面的行做了同样的事情,但是以一种更紧凑和Pythonic的方式:

代码语言:javascript
复制
data = [[int(n) for n in line.split()] for line in ins]

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

代码语言:javascript
复制
data = [tuple(int(n) for n in line.split()) for line in ins]
print(data) # [(1, 3, 4), (5, 5, 6)]
票数 5
EN

Stack Overflow用户

发布于 2014-01-20 15:48:57

代码语言:javascript
复制
with open("input.txt", "r") as file:
    result = [[int(x) for x in line.split()] for line in file]
票数 6
EN

Stack Overflow用户

发布于 2014-01-20 15:50:05

单班轮时间:

代码语言:javascript
复制
[line.split() for line in ins]

如果要将项转换为int,请随意这样做:

代码语言:javascript
复制
[map(int, line.split()) for line in ins]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21238242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档