2014-11-23 4 views
0

프로그램의 파일에서 키워드를 한 줄씩 찾으려면 프로그램을 작성하고 있습니다. 아래에 재현 된 코드는 고유 한 키워드 만 생성하고 내가 가지고있는 키워드 수에 추가하려면 대소 문자를 구분하지 않는 키워드 (키워드는 목록 L에 있음)를 목록에 추가하는 데 사용됩니다. 다음과 같이 코드는 다음과 같습니다 제가 실행하려고하면 "and not in"이있는 파이썬 구문 오류

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 문에서 잘못된 점은 무엇입니까?

감사합니다.

답변

1

not in seen을 지정하지 않았습니다. 귀하의 상태는 X not in Y의 형식이어야합니다. 또한 첫 번째 표현은 사용자가 생각하는대로 수행되지 않습니다. words.upper() or words.lower() in Lwords.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

나는 그게 얼마나 간단한 지 믿을 수 없습니다. 마지막으로, words.upper() 또는 words.lower()를 L의 첫 번째 조건에 대한 괄호 안에 넣으면 그 것이 효과가 있습니까, 아니면 내가했던 것처럼 그것을 나눌 필요가 있습니까? – Hazim

+0

그들을 분할해야합니다. 당신이 제안한 것을했다면'words.upper() 또는 words.lower()'는'words.upper()'로 평가 될 것입니다. – DanielGibbs