2014-11-23 136 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