1

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

['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(',')))
4

3 回答 3

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']
于 2012-04-21T12:07:51.277 回答
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当打开/处理文件时出现异常时,语句将自动关闭您的文件。在您的情况下可能没有必要,但您应该记住这种可能性。使用上下文管理器是一种很好的做法 [更多]

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

  3. 我并不是说任何支持csv模块或反对使用内置函数打开文件并使用split(','). 这是你的选择,我只是建议替代方案。

于 2012-04-21T12:16:23.247 回答
0
t = []
for line in open("txt", "r").readlines():
    t.append(line.rstrip().split(','))
于 2012-04-21T12:09:32.910 回答