将2d数组从文件读入python列表

时间:2012-04-21 12:02:42

标签: python

我正在尝试将一个逗号分隔值的二维数组从文件读入列表。我有以下问题,如何摆脱尾随换行符?这就是我的意思。这是我读过的一行。

['0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1\n']

目前,我在代码中有以下内容:

ins = open( "parseTable.txt", "r" )
parseTable = []
for line in ins:
    row = line.split(',')
    parseTable.append(row)

感谢大家的提示。我做了以下工作。 感谢所有的提示。我做了以下工作。

ins = open( "parseTable.txt", "r" )
parseTable = []
for line in ins:
    row = line.split(',')
    parseTable.append(map(int,line.split(',')))

3 个答案:

答案 0 :(得分:1)

现有代码所需的唯一更改是在rstrip()之前使用split()函数。如,

ins = open( "parseTable.txt", "r" )  # the "r" is not really needed - default 
parseTable = []

for line in ins:
   row = line.rstrip().split(',')  # <- note use of rstrip()
   parseTable.append(row)

这将消除所请求的尾随换行符。


一个简单的例子,一步一步:

In [2]: s = 'this is a test\n'

In [3]: s
Out[3]: 'this is a test\n'

In [4]: s.rstrip()
Out[4]: 'this is a test'

因此,为了使更改成为现实,您需要进行分配

In [5]: s = s.rstrip()

In [6]: s = s.split()

In [7]: s
Out[7]: ['this', 'is', 'a', 'test']

或者只需一步:

 In [11]: s = s.rstrip().split()

 In [12]: s
 Out[12]: ['this', 'is', 'a', 'test']

答案 1 :(得分:1)

使用with语句,列表推导和csv模块

import csv
with open("parseTable.txt") as f:
    parseTable = [x.rstrip() for x in row for row in csv.reader(f)]

编辑:

    当打开/处理文件时异常引发时,
  1. with语句将自动关闭您的文件。在您的情况下可能没有必要,但您应该记住这种可能性。使用上下文管理器是一种很好的做法[More]

  2. 列表理解通常会使您的脚本更快,但有时更难以实现可读性。无论如何,你必须理解并使用它。

  3. 我的意思是赞成csv模块或打开具有内置函数的文件并使用split(',')拆分行。这是你的选择,我只是建议替代方案。

答案 2 :(得分:0)

t = []
for line in open("txt", "r").readlines():
    t.append(line.rstrip().split(','))