访问列表时,'NoneType'对象没有属性'group'?

时间:2014-03-29 08:23:04

标签: python

这里只是一个前言,我对Python非常非常新,我刚开始学习当我开始当前的项目时:

我目前正在编写一个reddit bot,用于搜索某个subreddit中的评论。它会使用前缀@获取评论。执行此操作后,我希望它搜索文本文件并将其与@之后的单词进行比较,以查看该单词是否在文本文件中。如果它成立,机器人将发布对所述评论的回复以及相关信息。

我的问题是,当我运行程序时,我得到了这个:

Traceback (most recent call last):
    File "main.py", line 46, in <module>
        name_hyphen = searchObjectWithHyphen.group(1)
AttributeError: 'NoneType' object has no attribute 'group'  

然后程序自行终止。我非常确定它与if name in monsterListif name_hyphen in monsterList行或变量namename_hyphen及其中的搜索对象有关,因为没有这些行程序运行正常(这意味着我的搜索对象返回none。)

我在这里缺少什么?

Here is my code。我还检查了该列表包含我所拥有的文本文件中的所有关键字。注意:我的文本文件中的关键字用新行分隔

2 个答案:

答案 0 :(得分:1)

该错误消息总是意味着同样的事情。您正尝试访问None对象上的属性。在这种情况下

searchObjectWithHyphen

None。检查指定searchObjectWithHyphen的代码,找出原因None。很可能你早先在代码中犯了一个错误。如果searchObjectWithHyphen可能是None是正常的,那么您需要特殊案例处理:

if searchObjectWithHyphen is None:
    ....

我不想尝试为您进行详细的特定调试。尤其是因为您没有在问题中包含代码。但更多的是因为这里真正的机会是学习如何来调试这类问题。

答案 1 :(得分:0)

问题是你的regex用连字符搜索在这一行中返回NoneType: searchObjectWithHyphen = re.search(patternWithHyphen, comment.body, re.IGNORECASE)

这是因为在你的模式中:

patternWithHyphen = '@' + '(\w+(?:-\w+)+)'

你必须逃避你的连字符以及如下:

patternWithHyphen = '@' + '(\w+(?:\-\w+)+)'

如果有效,请告诉我。希望有所帮助