拉取推文时的UnicodeEncodeError:字符映射无法编码

0 投票
2 回答
2385 浏览
提问于 2025-04-18 18:50

我想从我的推特时间线上获取推文。但是我只能获取一半的推文。系统提示说字符编码无法处理某个字符,具体是“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'

撰写回答