2017-03-12 1 views
0

Ich importiere regex für eine Wortzahl in einer Zeichenfolge, und ich versuche, den Operator ^ zu verwenden. Obwohl der Compiler die ^ als Teil von Regex erkennt, und nicht der exklusive oder Operator. Dies ist mein Code:Python - Konflikt mit Regex und Exklusiv oder Operator

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) 

Die Linie, die ich den Fehler bekommen ist, wo es heißt elif. Gibt es eine Möglichkeit, dem Compiler mitzuteilen, dass ich den exklusiven Operator verwenden möchte? Danke im Voraus!

+0

Können Sie die Logik hinter Ihrem Code erklären? – Den1al

+0

Ich sehe keinen Konflikt in Ihrem Beispiel. Regex hat nichts mit Ihrem Fehler zu tun. – DyZ

Antwort

1

Wenn Sie die Fehlerspur hinzufügen können, wäre es toll. Mein Verdacht ist, dass, dass Sie Klammern auf jeder Booleschen Anweisung wie folgt setzen müssen:

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

Es hat nicht funktioniert. Der Fehler ist "nicht geschlossene Zeichenfolge in Zeile 10. Haben Sie ein Angebot vergessen?" –

0

Operator ^ hat eine höhere Priorität als Betreiber in. Ihr Ausdruck entspricht "will" in (question^"can") in (question^"did") ..., während Sie vermutlich es ("will" in question)^("can" in question)^("did" ... wollen. Verwenden Sie also Klammern, um Ihren Ausdruck zu disambiguieren.