Python Reddit Отправка текста нарезки - PullRequest
0 голосов
/ 29 апреля 2020

Я использую PRDW от Reddit для сбора материалов. Я хочу иметь возможность разрезать текст представления и сохранять его в переменной для сравнения с жестко закодированным числом, чтобы удалить каждый пост отправки, у которого в заголовке есть номер, превышающий его.

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 числами ie 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))

1 Ответ

2 голосов
/ 29 апреля 2020

Чтобы получить первые n символов любой строки, выполните следующие действия:

(при условии, что ваш заголовок «18: Hello!»)

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, и если оно больше любого полученного вами числа, выведите title в вашем поле для l oop, иначе проигнорируйте его.

Например (при условии, что submission.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)

Sho результат:

18 Years and I haven't realised this before

Распечатывается

...