[英]Ignore last \n when using readlines with python
我有一個我從中讀取的文件,如下所示:
1 value1
2 value2
3 value3
該文件在最后一行中可能有也可能沒有尾隨\\ n。
我正在使用的代碼效果很好,但如果有一個尾隨\\ n它失敗了。
什么是抓住這個的最好方法?
我的代碼供參考:
r=open(sys.argv[1], 'r');
for line in r.readlines():
ref=line.split();
print ref[0], ref[1]
哪一個會失敗的:
Traceback(最近一次調用最后一次):
文件“./test”,第14行,in
print ref [0],ref [1]
IndexError:列表索引超出范圍
您可以忽略僅包含空格的行:
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]
我不認為你告訴我們整個故事。 無論最后一行是否以\\n
終止, line.split()
都會給出相同的結果。
請注意, \\n
終止的文件中的最后一行是USUAL行為,並且人們偶爾會被未被終止的行打擾。
如果你做的事情如下:
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的可能性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.