Чтобы записать CSV-файл в Python, используйте модуль csv
, в частности csv.writer()
. Вы импортируете этот модуль вверху вашего кода, но никогда не используете его.
Используя это в своем коде, это выглядит так:
with open('Reddit.csv', 'w') as csvfile:
comment_writer = csv.writer(csvfile)
for comment in submission.comments:
comment_writer.writerow([comment.body])
Здесь мы используем csv.writer()
для создайте средство записи CSV из файла, который мы открыли, и мы называем его comment_writer
. Затем для каждого комментария мы записываем еще одну строку в файл CSV. Строка представлена в виде списка. Поскольку у нас есть только один фрагмент информации для записи в каждой строке, список содержит только один элемент. Строка: [comment.body]
.
Модуль csv
позаботится о том, чтобы значения с новыми строками, запятыми или другими специальными символами были правильно отформатированы как значения CSV.
Обратите внимание, что для некоторых представлений с большим количеством комментариев ваш код PRAW может вызвать исключение в виде 'MoreComments' object has no attribute 'body'
. Документы PRAW обсуждают это , и я призываю вас прочитать это, чтобы узнать больше, но знайте, что мы можем избежать этого в коде, изменяя нашу l oop:
from praw.models import Comment
# ...
with open('Reddit.csv', 'w') as csvfile:
comment_writer = csv.writer(csvfile)
for comment in submission.comments:
if isinstance(comment, Comment):
comment_writer.writerow([comment.body])
Кроме того, ваш код получает только комментарии верхнего уровня. Если вас интересует больше, см. этот вопрос , в котором рассказывается о том, как получить из представления больше, чем просто комментарии верхнего уровня.