这里只是一个前言,我对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 monsterList
或if name_hyphen in monsterList
行或变量name
或name_hyphen
及其中的搜索对象有关,因为没有这些行程序运行正常(这意味着我的搜索对象不返回none
。)
我在这里缺少什么?
Here is my code。我还检查了该列表包含我所拥有的文本文件中的所有关键字。注意:我的文本文件中的关键字用新行分隔
答案 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+)+)'
如果有效,请告诉我。希望有所帮助