Почему мой код не компилируется

Я только изучаю Python и решил написать действительно простого бота Python для ответа на Reddit.

При компиляции я получаю следующую ошибку:

Файл "C:\Python35\Scripts\RedditBot\Reddit.py", строка 28, за исключением атрибута error: ^ SyntaxError: неверный синтаксис

Я не могу понять, что является причиной этого, поскольку код выглядит правильно для меня.

import praw

USERAGENT = "BOT Name"
USERNAME = "Username"
PASSWORD = "Password"
SUBREDDIT = "Subreddit"
MAXPOSTS = 100

SETPHRASES = ["Phrase", "PhraseOne"]
SETRESPONSE = "This is the response."

print('Logging in to Reddit')
r = praw.Reddit(USERAGENT)
r.login (USERNAME, PASSWORD)

def replybot():
    print('Fetching Subreddit ' + SUBREDDIT)
    subreddit = r.get_subreddit(SUBREDDIT)
    print('Fetching comments')
    comments = subreddit.get_comments(limit=MAXPOSTS)
    for comment in comments:
        try:
            cauthor = comment.author.name
            cbody = comment.body.lower()
            if any(key.lower() in cbody for key in SETPHRASES):
                print("Replying to " + cauthor)
                comment.reply(SETRESPONSE)
            except attributeerror:
                pass
replybot()

1 ответ

Решение

У вас две проблемы.

  • Первый, который отображается в traceback, - это отступ. "попробовать" и "кроме" должны быть на одном уровне отступа.
  • Второй - ссылка на attributeerror. Это должно быть верблюжьим, как в AttributeError.

Поэтому внутренняя часть вашего цикла for должна выглядеть следующим образом:

try:
   cauthor = comment.author.name
   cbody = comment.body.lower()
   if any(key.lower() in cbody for key in SETPHRASES):
      print("Replying to " + cauthor)
      comment.reply(SETRESPONSE)
except AttributeError:
   pass
Другие вопросы по тегам