title: Python TypeError: 'NoneType' object has no attribute '__getitem__
body: <p>Working on a project to get headword from a sentence using Collins Head Rules. </p>
  
  <p>This is the error that I get:</p>
  
  <pre><code>File "C:\Users\PC\Desktop\Python27\PyProject\src\Feature\FeatureExtractor.py", line 225, in collinsHeadExtractor
      if raw['whWord']=='whWord-what':
  TypeError: 'NoneType' object has no attribute '__getitem__'
  </code></pre>
  
  <p>This is the part of the code that generated the error:</p>
  
  <pre><code>def whoPattern(question):
              p1 = re.compile("^[w|W]ho (is|are|was|were)( the)*( \`\`)*( [A-Z][a-z]+)+( \'\')* \?$")
              if p1.match(question):
                  return "HUM:desc"
              p2 = re.compile("^[w|W]ho (is|was) .*")
              if p2.match(question):
                  return "Hum:ind"
          if training:
              file = DBStore.trainingRoot+"\\headword_question"+colName+".txt"
          else:
              file = DBStore.testingRoot+"\\headword_question"+colName+".txt"
          f = open(file,'r')
          p = re.compile(r"(?P&lt;head&gt;.+)::(?P&lt;question&gt;.+)")
          i = 0
          rawQuestions = DBStore.getDB()['raw'+colName]
          p2 = re.compile('\.')
          headWord = []
          for line in f:
              print iWor
              i = i + 1
              match = p.match(line)
              print match.group('question')
              head = p2.sub('',match.group('head'))
              question = match.group('question')
              raw = rawQuestions.find_one({'question':question})
              if raw['whWord']=='whWord-what':
                  pattern = whatPattern(question)
              elif raw['whWord']=='whWord-who':
                  pattern = whoPattern(question)
              else:
                  pattern = None
              if head.isupper() and (pattern == "DESC:def_1" or pattern == 'DESC:def_2'):
                  pattern = "ABBR:exp"
              if head == 'null':
                  headWord = [None,pattern]
              elif pattern is None:
                  headWord = [head,pattern]
              else:
                  headWord = [None,pattern]
              rawQuestions.update({'question':question},{"$set":{"head":headWord}},safe=True,multi=True)
  </code></pre>
  
  <p>Any help to figure this out would be great. Thanks!</p>