Python Reddit 提交文本切片
Posted
技术标签:
【中文标题】Python Reddit 提交文本切片【英文标题】:Python Reddit Submission Text Slicing 【发布时间】:2020-08-13 12:52:55 【问题描述】:我正在使用 Reddit 的 PRAW 来收集提交内容。我希望能够对提交的文本进行切片并将其保存到一个变量中,以与硬编码的数字进行比较,以删除每个提交的帖子,其数字大于其标题。
import praw
reddit = praw.Reddit(client_id = 'REDACTED',
client_secret = 'REDACTED',
username = 'REDACTED', password = 'REDACTED',
user_agent = 'REDACTED')
subreddit = reddit.subreddit('NumbersReddit')
new_numpost = subreddit.new(limit=10)
for submission in new_numpost :
if not submission.stickied:
print(50*'-')
print('User: '.format(submission.author))
print('Title: '.format(submission.title))
print('URL: '.format(submission.url))
使用上面的代码作为起点:删除粘贴的提交后,我想获取帖子标题的前两个字符(并且始终是 2 个数字,即 24)并将其与硬编码数字,例如 18,因此它会删除所有以大于 18 的数字开头的帖子。
以下应该是输出:
用户:Example1
标题:18 年了,我之前还没有意识到这一点
网址:https://www.reddit.com/r/NumbersReddit/comments/example1
用户:Example2
标题:我尝试了 18 次,但它是值得的
网址:https://www.reddit.com/r/NumbersReddit/comments/example2
用户:Example3
标题:18 人表示节食对他们来说就足够了
网址:https://www.reddit.com/r/NumbersReddit/comments/example3
修复
改变了这个:
for submission in new_numpost :
if not submission.stickied:
print(50*'-')
print('User: '.format(submission.author))
print('Title: '.format(submission.title))
print('URL: '.format(submission.url))
到这里:
for submission in new_numpost :
if not submission.stickied:
title_number = int(submission.title[:2])
if title_number < 25:
print(50*'-')
print('User: '.format(submission.author))
print('Title: '.format(submission.title))
print('URL: '.format(submission.url))
【问题讨论】:
所以你只是想找到标题的前两个字符? 是的。我查找了字符串切片,但无法使用我所拥有的。如果我可以对字符串进行切片并将其保存然后进行比较,那就太好了。 【参考方案1】:要获取任何字符串的前 n 个字符,请执行以下操作:
(假设你的标题是“18:你好!”)
my_title = '18: Hello!'
print(my_title[:2])
结果:
18
因此,对于您来说,您需要在标题行中执行以下操作:
print('Title: '.format(submission.title[:2]))
假设它是一个字符串。
一旦你有了它,你可以像这样将它转换成一个整数(假设我们还没有切片它):
title = int(title[:2])
然后你可以用 int 做任何你想做的比较。
已更新以进一步澄清答案:
您的完整标题似乎来自submission.title
,因此您可以做的是基于此创建两个变量:
一个名为title_number
的变量和另一个名为title
的变量,其中title_number = int(submission.title[:2])
和title = submission.title
,您所做的就是比较title_number
,如果它大于您得到的任何数字,则在for 循环中打印title
,否则忽略它。
例如(假设 submit.title 是 '18 Years and I didn't realize this before')
check_int = 17
for submission in new_numpost:
title = submission.title
title_number = int(submission.title[:2])
if title_number > check_int:
print(title)
应该导致:
18 Years and I haven't realised this before
打印出来
【讨论】:
补充条约所说的,如果数据当前不是字符串,您可以使用 str() 转换数据 只需从submission.title中获取标题即可。所以title = submission.title
然后随意拆分。
我仍然需要保留提交的完整标题,但过滤掉所有我不想要的。我会修改我的帖子,让你知道我的标题是什么意思。
哦,那么只需从变量title_number = int(submission.title[:2])
的拆分名称中获取标题编号,然后您可以命名另一个变量title = submission.title
现在您拥有标题编号和标题本身。
啊,太棒了!我可以看到那里的逻辑并且它有效,不敢相信我没有看到它。非常感谢您的帮助。以上是关于Python Reddit 提交文本切片的主要内容,如果未能解决你的问题,请参考以下文章