拉动推文的UnicodeEncodeError charmap无法编码

时间:2014-08-28 13:01:58

标签: python twitter

我正试图从我的时间轴中提取推文。但我只能检索其中的一半。它是投掷charmap编解码器无法编码字符u" \ u2026"。字符映射到undefined。 我尝试了不同的编码utf-8,ASCII,latin-1和cp1252。但我得到了同样的结果。所以我认为编码没有改变。我应该如何改变编码以及我应该选择哪种编码来拉取推文。我使用的是Windows 7和python 2.7.8。这是我的代码

import tweepy
import csv 
consumer_key = ''
consumer_secret = ''
access_token = '' 
access_secret = ''
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)
api = tweepy.API(auth)
data = api.get_user('')
# Open/Create a file to append data
csvFile = open('hollywood.csv', 'a')
#Use csv Writer
csvWriter = csv.writer(csvFile, delimiter=' ')
i = 0
for tweet in tweepy.Cursor(api.user_timeline).items():
    #Write a row to the csv file/ I use encode utf-8
    csvWriter.writerow([tweet.created_at, tweet.text.encode('cp1252')])
    print tweet.created_at, tweet.text
    i+=1
    if i%5 == 0:
        print i
csvFile.close(). 

2 个答案:

答案 0 :(得分:2)

尝试:

tweet.text.encode('utf8')

UTF-8在这个意义上是防弹的。 U + 2026不能用Latin1和其他编码。

完美运作:

>>> u"\u2026".encode('utf8')
'\xe2\x80\xa6'

答案 1 :(得分:0)

您需要告诉操作系统在写入文件时使用哪种编码,在本例中为utf8,并对编写的文本进行编码。

尝试

tweet.text.encode('utf-8')

csvFile = open('hollywood.csv', encode = "utf-8", mode = 'a')