-1

enter image description here As in the image, I would like to categorize questions into 5 levels. I am writing an if statement and have an indent problem in nested if statements at the below codes. I have kept seeing IndentationError: unexpected indent Could you help me to check the indentation?


def determine_question():
    stringline=line.replace("\r","")
    stringline=stringline.replace("\n","")

#Determining LEVEL 2 QUESTIONS
    if contains_word(stringline.lower(), 'what'): # indent 4
        if contains_word(stringline.lower(), 'do') or contains_word(stringline.lower(), 'does') or contains_word(stringline.lower(), 'did'): # indent 8
            
            #Instead to determining LEVEL 2 QUESTIONS, Jumping to LEVEL 3 based on vocabulary
                if contains_word(stringline.lower(), 'explain') or contains_word(stringline.lower(), 'example') or contains_word(stringline.lower(), 'result') or contains_word(stringline.lower(), 'show') or contains_word(stringline.lower(), 'differ'): # indent 16
                    resultfile.write(stringline + ' - Level 3 - based on directive verb' + "\n")
                    return None
                if contains_word(stringline.lower(), 'could') or contains_word(stringline.lower(), 'can') or contains_word(stringline.lower(), 'would') or contains_word(stringline.lower(), 'will') or contains_word(stringline.lower(), 'might') or contains_word(stringline.lower(), 'should') or contains_word(stringline.lower(), 'shall'):      
                    resultfile.write(stringline + ' - Level 3 - based on directive verb' + "\n")  
                    return None
            
                #Instead to determining LEVEL 2 QUESTIONS,Jumping to LEVEL 4 based on vocabulary
                
                if contains_word(stringline.lower(), 'mean') or contains_word(stringline.lower(), 'infer') or contains_word(stringline.lower(), 'interpret'):
                    resultfile.write(stringline + ' - Level 4 - based on directive verb' + "\n")  
                    return None
                
                if contains_word(stringline.lower(), 'summarize') or contains_word(stringline.lower(), 'recommend') or contains_word(stringline.lower(), 'evaluate') or contains_word(stringline.lower(), 'consider'):
                    resultfile.write(stringline + ' - Level 4 - based on directive verb' + "\n")  
                    return None
                                
                else:
                    resultfile.write(stringline + ' - Level 2' + "\n")
                    return None
                
                
    if contains_word(stringline.lower(), 'which'):
        if contains_word(stringline.lower(), 'do') or contains_word(stringline.lower(), 'does') or contains_word(stringline.lower(), 'did') or contains_word(stringline.lower(), 'is') or contains_word(stringline.lower(), 'was') or contains_word(stringline.lower(), 'are') or contains_word(stringline.lower(), 'can') or contains_word(stringline.lower(), 'could') or contains_word(stringline.lower(), 'would') or contains_word(stringline.lower(), 'will') or contains_word(stringline.lower(), 'might') or contains_word(stringline.lower(), 'should') or contains_word(stringline.lower(), 'shall') or contains_word(stringline.lower(), 'of'):
                resultfile.write(stringline + ' - Level 2' + "\n")  
                return None

    if contains_word(stringline.lower(), 'who'):
        if contains_word(stringline.lower(), 'can') or contains_word(stringline.lower(), 'could') or contains_word(stringline.lower(), 'would') or contains_word(stringline.lower(), 'will') or contains_word(stringline.lower(), 'might') or contains_word(stringline.lower(), 'should') or contains_word(stringline.lower(), 'shall'):
                resultfile.write(stringline + ' - Level 2' + "\n")  
                return None
                
    if contains_word(stringline.lower(), 'when'):
        if contains_word(stringline.lower(), 'do') or contains_word(stringline.lower(), 'does')  or contains_word(stringline.lower(), 'are') or contains_word(stringline.lower(), 'can') or contains_word(stringline.lower(), 'could') or contains_word(stringline.lower(), 'would') or contains_word(stringline.lower(), 'will') or contains_word(stringline.lower(), 'might') or contains_word(stringline.lower(), 'should') or contains_word(stringline.lower(), 'shall'):
                resultfile.write(stringline + ' - Level 2' + "\n")  
                return None
                                 
    if contains_word(stringline.lower(), 'where'):
        if contains_word(stringline.lower(), 'do') or contains_word(stringline.lower(), 'can') or contains_word(stringline.lower(), 'could') or contains_word(stringline.lower(), 'would') or contains_word(stringline.lower(), 'will') or contains_word(stringline.lower(), 'might') or contains_word(stringline.lower(), 'may') or contains_word(stringline.lower(), 'should') or contains_word(stringline.lower(), 'shall'):
                resultfile.write(stringline + ' - Level 2' + "\n")  
                return None

    if contains_word(stringline.lower(), 'how many') or contains_word(stringline.lower(), 'how much'):
            if contains_word(stringline.lower(), 'do') or contains_word(stringline.lower(), 'does') or contains_word(stringline.lower(), 'did') or contains_word(stringline.lower(), 'is') or contains_word(stringline.lower(), 'was') or contains_word(stringline.lower(), 'are') or contains_word(stringline.lower(), 'were') or contains_word(stringline.lower(), 'can') or contains_word(stringline.lower(), 'could') or contains_word(stringline.lower(), 'would') or contains_word(stringline.lower(), 'will') or contains_word(stringline.lower(), 'might'):
                resultfile.write(stringline + ' - Level 2' + "\n")            
                return None
Genie
  • 41
  • 6
  • The error tells you the line that is the problem, just make sure the width of the indent is the same as the rest of the idents in the file. Alternatively use an IDE and it can auto-format your code to fix this for you – QuantumMecha Oct 27 '21 at 05:55
  • Also consider using `pandas`, it will make your life a lot easier. – RJ Adriaansen Oct 27 '21 at 05:56

1 Answers1

0

Lines 10-29 and all the inner parts of the if-blocks (e.g. lines 34-35, 39-40) after that are indented too much. See here for reference.
As QuantumMecha said, you might want to consider using an IDE. I like PyCharm but there are a lot of good ones.

white
  • 601
  • 3
  • 8
  • Thank you so much! As you and QuantumMecha said, I tried to use IDE(Pycharm), but it doesn't work some codes, when I type import sys / import csv/ from nltk import wordpunct_tokenize .... I also upload this problem hereL https://stackoverflow.com/questions/69734482/pycharm-can-not-read-some-codes-how-can-i-solve-this-problem – Genie Oct 27 '21 at 07:31