2

我正在尝试使用 PRAW 获得给定 subreddit 的所有时间的前 25 名:

import praw
subreddit = 'gamedeals'
r = praw.Reddit(user_agent='getting top 25 of all time by /u/sqrg')
submissions = r.get_subreddit(subreddit).get_top_from_all(limit=25)
titlesFile = open("text.txt", 'w')
for s in submissions:
    titlesFile.write(s.title.encode('utf-8', 'replace') + '\n')
titlesFile.close()

我收到以下错误:

UnicodeEncodeError:'ascii' 编解码器无法在位置 63 编码字符 u'\xa3':序数不在范围内(128)

所以我将for循环内的行更改为:

titlesFile.write(s.title.encode('utf-8', 'replace') + '\n')

它有效,但在 text.txt 文件中我得到&的不是&. 我可以用一些字符串替换函数来改变它们,但是有没有办法直接写正确的标题?另外,为什么我必须使用该encode()方法?

4

1 回答 1

1

启用设置以解码 html 实体:

r = praw.Reddit(user_agent='getting top 25 of all time by /u/sqrg')
r.config.decode_html_entities = True

配置文件文档:https ://praw.readthedocs.org/en/latest/pages/configuration_files.html

更多信息在这里:https ://github.com/praw-dev/praw/issues/186

于 2013-11-03T23:56:06.007 回答