在python中使用readlines时忽略最后一个\n
我有一个从中读取的文件,看起来像:在python中使用readlines时忽略最后一个\n,python,readlines,Python,Readlines,我有一个从中读取的文件,看起来像: 1 value1 2 value2 3 value3 文件的最后一行可能有尾随符,\n也可能没有尾随符 我正在使用的代码工作得很好,但如果有尾随,则会失败。 抓住这个最好的方法是什么 我的参考代码: r=open(sys.argv[1], 'r'); for line in r.readlines(): ref=line.split(); print ref[0], ref[1] 如果出现以下情况,则会失败: 回溯(最近一次呼叫
1 value1
2 value2
3 value3
文件的最后一行可能有尾随符,\n也可能没有尾随符
我正在使用的代码工作得很好,但如果有尾随,则会失败。抓住这个最好的方法是什么 我的参考代码:
r=open(sys.argv[1], 'r');
for line in r.readlines():
ref=line.split();
print ref[0], ref[1]
如果出现以下情况,则会失败:回溯(最近一次呼叫最后一次):
文件“/test”,第14行,在
打印参考[0],参考[1]
索引器错误:列表索引超出范围您可以忽略仅包含空格的行:
for line in r.readlines():
line = line.rstrip() # Remove trailing whitespace.
if line: # Only process non-empty lines.
ref = line.split();
print ref[0], ref[1]
我认为你没有告诉我们全部情况
line.split()
将给出相同的结果,无论最后一行是否由\n
终止。
请注意,\n
终止文件中的最后一行是通常的行为,人们偶尔会被未终止的行所困扰
如果您要执行以下操作:
print repr(line), repr(ref)
而不是
print ref[0], ref[1]
你将能够自己发现到底发生了什么,而不是让我们去猜测
如果@Mark Byers猜测,您的最后一行是空的或只包含空格,您可以通过以下更简单的代码忽略该行(以及所有其他此类行):
for line in r: # readlines is passe
ref = line.split() # split() ignores trailing whitespace
if ref:
print ref[0], ref[1]
<强>请考虑在最后一行中只有0个或2个字段的可能性。< /强>
rA带是多余的;split忽略了引导/训练空格我想他的意思是,在结尾还有另一行,只包含\n
。。。(文件以“…value3\n\n”结尾)