我正试图从我的时间轴中提取推文。但我只能检索其中的一半。它是投掷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().
答案 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')