搜索包含列表 PSAW python 中任何单词的 reddit 评论

Posted

技术标签:

【中文标题】搜索包含列表 PSAW python 中任何单词的 reddit 评论【英文标题】:Searching for reddit comment containing any word from list PSAW python 【发布时间】:2019-09-20 11:01:05 【问题描述】:

您好,我正在使用 PSAW 和 PRAW 获取 reddit cmets。

这里是搜索代码:

gen = api.search_comments(subreddit="subreddit1, subreddit2", q="word1, word2")

此代码检查 subreddit1 和 2 中的 cmets,但会查找同时包含 word1 和 word2 的 cmets。我怎样才能让它搜索包含 word1 或 word2 或两者的 cmets?

谢谢(如果您需要更多信息,请告诉我)

【问题讨论】:

【参考方案1】:

简短的回答是,您无法一步完成您的要求,至少在我所见的范围内是这样。但您当然可以分多个步骤来完成。

# to search for either word1 or word 2, use |
gen1 = api.search_comments(subreddit="subreddit1, subreddit2", q="word1|word2")

# to search for both word1 and word 2, use &
gen2 = api.search_comments(subreddit="subreddit1, subreddit2", q="word1&word2")

仅供参考 - 在 PSAW 中搜索 cmets 本质上是一个包装器

api.pushshift.io/reddit/comment/search?q=...

对于您的问题,您可以使用该网站来更好地了解它将返回什么。 API 并不完美,即使您使用 |,您仍然会得到一些包含两个单词的 cmets,即使您使用 &,您仍然会得到一些仅包含一个单词的 cmets,但是这些运算符占了大部分肩上的工作。

【讨论】:

当我执行 gen = api.search_cmets 时,它会覆盖之前的搜索吗? 如果我正确理解您的问题,那么是的,绝对。如果您要完全按照所写的方式运行我的示例代码,那就是这种情况,很抱歉造成混淆。作为使用变量编程的基本方面之一,每次您将一些结果分配给变量gen 时,它都会覆盖之前存储到gen 的内容。您可以通过将gen 设为列表并将append 设为您的结果,或者使用多个变量(如gen1gen2gen3 等)轻松解决此问题。我已经改变了我的在上面发布以使用第二个选项。

以上是关于搜索包含列表 PSAW python 中任何单词的 reddit 评论的主要内容,如果未能解决你的问题,请参考以下文章

如果仅句子包含搜索列表中的任何关键字,则从数据框文本列中选择句子

在列表中搜索字符串并将其存储在 Python 中

解析python中的单词列表

在巨大列表中查找/搜索的最有效方法(python)

搜索引擎基础概念—— 倒排列表

PostgreSQL通配符搜索任何单词列表