首页 > 解决方案 > 将文件内容转换为嵌套列表

问题描述

我有一个文本文件,包含

2、1、3

3、1、3

2、9

我的输出应该是

[[2,1,3],[3,1,3],[2,9]]

我该怎么做?

我试过了

data=[]
for line in open(file,'r'):
    items = line.rstrip('\r\n').split('\t')
    items = [item.strip() for item in items]
    (data.append(items))
return data

但是 [['2,1,3'],['3,1,3'],['2,9']] 出来了。我不希望输出影响报价。

标签: python

解决方案


您还可以使用列表推导:

with open('file.txt', 'r') as f:
    lines = [[int(n) for n in line.strip().split(',')] for line in f.readlines() if line.strip()]

基本上,readlines()返回一个列表,其中每个元素都是一行。

['2, 1, 3\n', '\n', '3, 1, 3\n', '\n', '2, 9'].

我们要拆分每一行(如果它包含数字到它自己的列表

线

[line.strip().split(',') for line in f.readlines() if line.strip()]

将给出以下输出:

[['2', ' 1', ' 3'], ['3', ' 1', ' 3'], ['2', ' 9']]

由于我假设想要的输出是整数列表,我们需要将每个元素转换为 int,这也可以通过使用列表推导添加来实现:

[[int(n) for n in line.strip().split(',')] for line in f.readlines() if line.strip()]

line.strip()将检查一行是否为空)

输出

[[2, 1, 3], [3, 1, 3], [2, 9]]


推荐阅读