Python Reddit提交文本切片

问题描述 投票:0回答:1

我正在使用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年,我以前没有意识到

URL:https://www.reddit.com/r/NumbersReddit/comments/example1


用户:Example2

标题:我尝试过18次,但这是值得的

URL:https://www.reddit.com/r/NumbersReddit/comments/example2


用户:Example3

标题:18人说节食对他们来说已经足够

URL: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))
python string slice reddit praw
1个回答
2
投票

要获取任何字符串的前n个字符,请执行以下操作:

(假设您的标题是“ 18:您好!”)

my_title = '18: Hello!'
print(my_title[:2])

结果:

18

因此,您将在标题行上执行以下操作:print('Title: {}'.format(submission.title[:2]))

假设那里是一个字符串。

一旦有了,就可以将其转换成这样的整数(假设我们尚未对其进行切片):

title = int(title[:2])

然后,您可以与int进行所需的任何比较。

已更新以进一步阐明答案:

似乎您的full标题来自submission.title,因此您可以基于此创建两个变量:一个名为title_number的变量,另一个名为title的变量,其中title_number = int(submission.title[:2])title = submission.title以及您所要做的就是比较title_number,如果它大于任何数字,则在for循环中打印title忽略它。

例如(假设submittion.title为'18 Years,但我之前没有意识到这一点']

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

正在打印中

© www.soinside.com 2019 - 2024. All rights reserved.