2017-02-14 70 views
1

我想將1500行的文件分隔成元數據和數據。else和elif的語法錯誤

以下是我有:

headerLines = [] 
dataLines = [] 
for line in lineList: 
    if (len(line) > 0 and (line[0] == #)) : 
     headerLines.append(line)  
    elif (len(line) > 0 and (line[0] == U): 
     dataLines.append(line) 
print("we have {} lines of metadata".format(len(headerLines))) 
print("we have {} lines of data".format(len(dataLines)))  

#here we want to seperate the lines in the file into headerLines and dataLines 
+0

你能解釋一下你得到的錯誤嗎? –

+0

教授給出了前三行和最後兩行,我們只需填寫「if」語句,我還在「elif」中添加了缺少的括號,它沒有改變任何事情,它只是說句法錯誤無效,有點胡蘿蔔指向elif。 –

+0

似乎它是'#',它是用來評論python中的一行的特殊字符.Hash符號後面的所有內容都被認爲已被刪除。 –

回答

1

你的問題是在你的解析。更改行:

if (len(line) > 0 and (line[0] == #)) : 

if (len(line) > 0 and (line[0] == '#')): 

正在發生的事情是,哈希(#)被視爲註釋,因此一切都將被忽略後(這就是爲什麼它是灰色的)。我做了什麼來解決這個問題,我把它改成了一個字符串,無論如何它不可避免地修復了腳本的另一個問題。如果line [0]是一段值爲#的文本,那麼它將被打印爲字符串'#',所以如果我們檢查它,它會工作得很好。

對於有閱讀障礙的人來說,你正在做一件了不起的工作,對你的學習很有幫助。

0

該行最後需要')'。 像這樣: elif的(LEN(線)> 0和(行[0] == U)):

另一個問題: 如果(LEN(線)> 0和(行[0] ==' #')):

'#'是一個運算符。就像+/-一樣,你不能將'aaa'與+/-進行比較。