0

我收到此错误:

Traceback (most recent call last):
  File "C:\Python27\botid.py", line 23, in <module>
    fiList = {msg:submission.ups + len(coList)}
NameError: name 'coList' is not defined

为了这:

wbcWords = ['wbc', 'advice', 'prc','server']
while True:
    subreddit = r.get_subreddit('MCPE')
    for submission in subreddit.get_hot(limit=30):
        op_text = submission.title.lower()
        has_wbc = any(string in op_text for string in wbcWords)
        # Test if it contains a WBC-related question
        if submission.id not in already_done and has_wbc:
            msg = '[WBC related thread](%s)' % submission.short_link
            comments = submission.comments
            for comment in comments:
                coList = [comment.author.name]
            fiList = {msg:submission.ups + len(coList)}
            print fiList

对我来说似乎很好。所有的搜索结果最终都是拼写错误,但我的似乎很好(我希望)

4

3 回答 3

2

我认为最简单的解决方案是列表理解:

coList = [comment.author.name for comment in comments]

这样,如果评论为空,您将得到一个空列表,否则作者姓名。此外,鉴于您输入的内容,最好将其称为authors_list.

于 2013-05-12T10:30:58.913 回答
0

仅当注释非空时才定义 coList。如果 comments 为空,则永远不会定义 coList,因此会导致名称错误。

看起来您在循环的每次迭代中都重新定义了 coList,但看起来您实际上很可能想要附加到它?

于 2013-05-12T10:25:12.093 回答
0

我认为你应该尝试:

coList = []
for comment in comments:
    coList.append(comment.author.name)

你正在尝试什么:

for comment in comments:
    coList = [comment.author.name]

对于每条评论,此循环都将 colList 重置为当前评论作者姓名的单个项目列表,但我可以从您的评论中看到您已经理解了这一点。

带有列表理解的其他评论在 imo 中要好得多,我个人也会使用:

colist = [comment.author.name for comment in comments]

它的一行看起来更干净,您可以清楚地阅读意图是什么,评论中的作者列表。

于 2013-05-12T10:25:25.963 回答