2015-10-01 12 views
1

我目前正在編寫一個靜態函數,其中打開的文件對象作爲參數傳入。然後它讀取該文件,如果該行爲空,則返回False。如果該行不是空的,它將使用相應的行加上接下來的三行來創建Person類的新對象(該類是在我的模塊中設計的)。出於某種原因,我的if語句沒有捕捉換行符,無論我嘗試了什麼方法,並且由於它而不斷收到錯誤。我究竟做錯了什麼?如果語句不捕獲文件中的空行

@staticmethod 
def read_person(fobj): 
    p_list = [] 
    for line in fobj: 
     if line.isspace() or line == "\n": 
      return False 
     else: 
      p_list.append(line) 
    return Person(p_list[0],p_list[1],p_list[2],p_list[3]) 

感謝您的幫助!

+0

你有沒有嘗試做線==「」,而不是?我不完全確定,但我認爲讀取緩衝區使用\ n作爲一個停止,所以它不會包含\ n –

+2

您是否嘗試過打印'repr(line)'來查看它看到的內容?你可以做'如果不line.split()' –

+0

我不認爲這是你的錯誤,但我需要看到更多的程序,以確保。它還不清楚文件的格式是什麼(多於一條記錄?) –

回答

1

你想要的法寶是:

if line.strip() == "": 

可以在所有可能的空白行處理的案件很少被抓到。是空格換行嗎?空間 - 空間 - 換行?標籤換行?空間的選項卡換行?等

所以,不要檢查所有這些情況。使用strip()刪除所有左右空格。如果你有一個空的字符串,這是一個空白的行,鮑勃是你的叔叔。

+0

是的,但那不是他的問題。 –