2014-08-28 16 views
0

我正在嘗試從我的時間線上拉推文。但是我只能找回其中的一半。這是投擲charmap編解碼器不能編碼字符u「\ u2026」。字符映射到未定義。 我嘗試了不同的編碼utf-8,ASCII,latin-1和cp1252。但我得到了同樣的結果。所以我認爲編碼沒有改變。我應該如何改變編碼,以及我應該選擇哪種編碼來推送推文。我正在使用Windows 7和Python 2.7.8。這是我的代碼拉扯推文的UnicodeEncodeError charmap無法編碼

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(). 

回答

1

嘗試:

tweet.text.encode('utf8') 

UTF-8在這個意義上說是刀槍不入。 U + 2026不能用Latin1和其他編碼。

完美的作品:

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

我試圖UTF8 Latin-1的CP1252 ASCII。但他們爲同一條推文投了同樣的錯誤。我的代碼是否正確?我是否正確更改編碼方案? – 2014-08-28 13:15:46

+0

@AbhishekSharma對不起,我不能說它是否正確(雖然看起來不錯),因爲我沒有使用該庫。我向你展示了一個孤立的例子,UTF8可以毫無問題地編碼該字符。你需要孤立你的問題,我不能運行你的代碼。 – Andrey 2014-08-28 14:08:39

+0

有沒有其他方法可以改變輸出結果的編碼。 – 2014-08-29 11:27:30

0

你需要告訴寫入文件時,在這種情況下utf8使用,並且也編碼送入作家文本編碼該操作系統。

嘗試

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

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