我正在尝试将一个逗号分隔值的二维数组从文件读入列表。我有以下问题,如何摆脱尾随换行符?这就是我的意思。这是我读过的一行。
['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(',')))
答案 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)]
编辑:
with
语句将自动关闭您的文件。在您的情况下可能没有必要,但您应该记住这种可能性。使用上下文管理器是一种很好的做法[More]
列表理解通常会使您的脚本更快,但有时更难以实现可读性。无论如何,你必须理解并使用它。
我的意思是赞成csv
模块或打开具有内置函数的文件并使用split(',')
拆分行。这是你的选择,我只是建议替代方案。
答案 2 :(得分:0)
t = []
for line in open("txt", "r").readlines():
t.append(line.rstrip().split(','))