Python 类型错误:'NoneType' 对象没有属性 '__getitem__
我正在做一个项目,目的是从句子中提取关键词,使用的是Collins的关键词规则。
我遇到了这个错误:
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__'
下面是导致这个错误的代码部分:
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<head>.+)::(?P<question>.+)")
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)
如果有人能帮我解决这个问题,那就太好了。谢谢!
1 个回答
5
这句话的意思是,rawQuestions.find_one({'question':question})
这个操作返回了 None
,也就是说没有找到任何匹配的内容。