gpt4 book ai didi

python - 如何在 PRAW 中存储评论的深度?

转载 作者:太空宇宙 更新时间:2023-11-03 20:34:40 24 4
gpt4 key购买 nike

我希望能够迭代帖子中的评论,最高可达 n 级别,并记录每个评论及其深度。不过,我认为在 Praw 中没有办法轻松做到这一点。

我想做这样的事情:

def get_post_comments(post, comment_limit):
comments = []
post.comments.replace_more(limit=comment_limit)
for comment in post.comments.list():
# do something

return [comment.body, comment_depth]

但我不确定如何获得评论的深度。

最佳答案

您使用 post.comments.list(),PRAW 文档对此进行了解释 returns a flattened list of the comments 。出于您的目的,由于您关心深度,因此您不需要一个平面列表!您想要原始的未展平的 CommentForest

使用递归,我们可以使用生成器通过深度优先遍历来访问此森林中的评论:

def process_comment(comment, depth=0):
"""Generate comment bodies and depths."""
yield comment.body, depth
for reply in comment.replies:
yield from process_comment(reply, depth + 1)

def get_post_comments(post, more_limit=32):
"""Get a list of (body, depth) pairs for the comments in the post."""
comments = []
post.comments.replace_more(limit=more_limit)
for top_level in post.comments:
comments.extend(process_comment(top_level))
return comments

或者,您可以在不使用递归的情况下执行广度优先遍历(我们也可以在不使用递归的情况下执行深度优先,显式使用堆栈)作为 PRAW documentation explains — 请参阅以“但是,评论森林可以任意深......”开头的部分。

关于python - 如何在 PRAW 中存储评论的深度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57243140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com