2017-03-12 5 views
0

문자열의 단어 수에 대해 regex을 가져 오는데 ^ 연산자를 사용하려고합니다. 그러나 컴파일러는 ^을 배타적 또는 연산자가 아닌 정규식의 일부로 인식합니다. 이 elif을 말한다 어디 오류를 받고 있어요Python - 정규식 및 배타 연산자 또는 연산자와의 충돌

import re as regex 

count = len(regex.findall(r'\w+', question)) 


if count < 3: 

    magicball.say("No Spam Allowed!!") 

elif "will" in question^"can" in question^"did" in question^"is" in question^"do" in question^"are" in question^"has" in question^"does" in question^"is" in question: 

    verified = True 
    print(oringinalquestion) 

라인 :이 내 코드입니다. 기본적으로 컴파일러에게 배타적 또는 연산자를 사용하고 싶다고 말하는 방법이 있습니까? 미리 감사드립니다!

+0

코드의 논리를 설명해 주시겠습니까? – Den1al

+0

귀하의 예제에서 충돌이 표시되지 않습니다. Regex는 오류와 아무 관련이 없습니다. – DyZ

답변

1

오류 추적을 추가 할 수 있으면 좋을 것입니다.

elif ("will" in question)^("can" in question)^("did" in question)^("is" in question)^("do" in question)^("are" in question)^("has" in question)^("does" in question)^("is" in question): 
+0

작동하지 않았습니다. 오류는'10 행의 닫히지 않은 문자열입니다. 견적을 잊었습니까? ' –

0

운영자 ^ 운영자 in보다 더 높은 우선 순위를 가지고 있습니다 : 내 의심이 같은 모든 부울 문에 괄호를 넣어 필요가 있다는 것입니다. 귀하의 표현은 "will" in (question^"can") in (question^"did") ...과 같습니다. 아마도 당신은 그것을 ("will" in question)^("can" in question)^("did" ...으로 바꾸고 싶을 것입니다. 따라서 괄호를 사용하여 표현식의 모호성을 제거하십시오.