【发布时间】:2017-12-20 15:12:58
【问题描述】:
我正在使用 twitter API 下载用户的所有推文。
当我下载推文时,我将它们编码为 utf-8,然后将它们放入 CSV 文件中。
tweet.text.encode("utf-8")
我正在使用 python 3
问题是这会在我的文件中创建非常奇怪的字符。 例如,读到的推文
"But I’ve been talkin' to God for so long that if you look at my life, I guess he talkin' back."
变成了
"b""But I\xe2\x80\x99ve been talkin' to God for so long that if you look at my life, I guess he talkin' back. """
(当我打开写入此编码文本的 CSV 文件时,我看到了这一点)。
所以我的问题是,我怎样才能阻止这些奇怪的角色被创造出来。
另外,如果有人能解释每行开头的b' 是什么意思,那将非常有帮助。
这里是完整的代码:
outtweets = [ [tweet.text.encode('utf-8')] for tweet in alltweets]
#write the csv
with open('%s_tweets.csv' % screen_name, 'wt') as f:
writer = csv.writer(f)
writer.writerow(["text"])
writer.writerows(outtweets)
【问题讨论】:
-
您不必明确编码文本。这是通过文件输出编码完成的。
-
但如果我没有明确编码,我会收到以下错误:'UnicodeEncodeError: 'ascii' codec can't encode character '\u201c' in position 1: ordinal not in range(128 )'
-
它们可以保持编码状态。读入程序时,可以打开并指定编码方案:
with open('test.csv', encoding='utf-8') as f: -
显示你使用的代码。
-
我现在添加了完整的代码