拉取推文时的UnicodeEncodeError:字符映射无法编码
我想从我的推特时间线上获取推文。但是我只能获取一半的推文。系统提示说字符编码无法处理某个字符,具体是“u "\u2026"”。这个字符在编码表中找不到对应的映射。我尝试了不同的编码方式,比如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
你需要告诉操作系统在写文件的时候用什么编码,这里用的是 utf8
,同时也要把要写的文本进行编码。
试试这个
tweet.text.encode('utf-8')
csvFile = open('hollywood.csv', encode = "utf-8", mode = 'a')
2
试试这个:
tweet.text.encode('utf8')
在这方面,UTF-8 是非常可靠的。U+2026 这个字符在 Latin1 和其他编码中是无法表示的。
效果非常好:
>>> u"\u2026".encode('utf8')
'\xe2\x80\xa6'