2014-11-23 299 views
0

我正在編寫一個程序,從程序中的文件逐行查找關鍵字。下面再現的一段代碼用於將不區分大小寫的關鍵字(關鍵字在列表L中)添加到列表中,以便生成唯一的關鍵字,並添加到我擁有的關鍵字的數量中。代碼如下:Python語法錯誤「不在」

for words in line: 
     if (words.upper() or words.lower() in L) and (not in seen): # this means a keyword was found 
      seen.append(words) # add keyword to the seen list to only find unique keywords 
      count += 1 # add to count of keywords in this line 

然而,當我嘗試運行它給了我一個語法錯誤與我的if語句和「不可見」凸現「中」。我的if語句有什麼問題?

謝謝。

回答

1

您沒有指定什麼是not in seen。你的情況應該是X not in Y的形式。此外,您的第一個表達式不會執行您認爲它的操作:words.upper() or words.lower() in L將檢查words.upper()是否不是空字符串,或者words.lower()是否在L中。

你可能想這樣的:

for words in line: 
    if (words.upper() in L or words.lower() in L) and (words.upper() not in seen and words.lower() not in seen): 
     seen.append(words) 
     count +=1 

如果你不關心存儲在看到的話時,你可以只改變一切話到一個情況下(上限或下限),使您的代碼簡單得多:

for words in line: 
    words = words.lower() 
    if words in L and words not in seen: 
     seen.append(words) 
     count +=1 
+0

我怎麼也不敢相信簡單的即得。最後,如果我在L中將第一個條件的words.upper()或words.lower()放在括號中,是否可以工作,還是需要像你一樣分割它? – Hazim 2014-11-23 14:42:59

+0

你需要把它們分開。如果你按照你的建議做了,'words.upper()或words.lower()'會評估爲'words.upper()'。 – DanielGibbs 2014-11-23 14:45:39