抓取Reddit特定帖子评论输出CSV:如何让每条评论独占单元格?
解决Reddit评论导出CSV时拆分到多个单元格的问题
我来帮你搞定这个问题!你遇到的评论被随机拆分到不同单元格的情况,主要是因为评论里可能包含逗号、换行符这些CSV格式的特殊字符——直接写入文本的话,CSV会把这些字符当成单元格分隔符或者换行标记来处理。再加上你之前的代码没用到Python的csv模块来规范写入逻辑,自然就会出现格式混乱的问题。
下面是修正后的完整代码,能确保每条评论单独占据一个单元格:
import praw import csv # 初始化Reddit客户端 reddit = praw.Reddit( client_id='你的ClientID', client_secret='你的ClientSecret', user_agent='你的UserAgent' ) # 获取目标帖子(注意变量名大小写统一,原来的Submission和submission大小写不一致会报错) submission = reddit.submission(id="你的SubmissionID") # 加载所有嵌套评论,替换掉PRAW默认的MoreComments占位对象 submission.comments.replace_more(limit=None) # 写入CSV文件 with open('Reddit.csv', 'w', newline='', encoding='utf-8') as csvfile: # 创建CSV写入器,默认用逗号作为分隔符 writer = csv.writer(csvfile) # 可选:写入表头,让CSV更易读 writer.writerow(['评论内容']) # 遍历所有评论(包括深层嵌套的评论) for comment in submission.comments.list(): # 将单条评论作为列表元素传入,csv.writer会自动处理特殊字符(加引号) writer.writerow([comment.body])
关键修正点说明:
- 使用
csv.writer规范写入:通过writerow([comment.body])把评论内容包装成列表传入,CSV写入器会自动给包含逗号、换行的评论添加双引号,确保内容不会被错误拆分。 - 加载所有评论:调用
submission.comments.replace_more(limit=None)可以替换掉所有的MoreComments对象,确保你能抓取到帖子里的所有层级评论,而不是只拿到表层的一部分。 - 编码与换行处理:指定
encoding='utf-8'避免特殊字符乱码,newline=''是Python处理CSV的最佳实践,能避免Windows系统下生成多余空行。
这样处理后,每条评论就会完整地单独占据一个单元格啦!
内容的提问来源于stack exchange,提问作者Jonatan Malm
相关产品推荐
相关产品推荐

