2013-06-29 73 views
1

我試圖解析twitter數據。我檢索到的數據,甚至使用編碼( 'UTF-8')後,將其存儲在一個名爲 'twitterdata'python中的編碼錯誤

f = open('twitterdata','r') 
for line in f: 
    jsonline = json.loads(line) 
    for key in jsonline: 
     print str(jsonline[key]).encode('utf-8') 

我收到錯誤文件:

print str(jsonline[key]).encode('utf-8') 
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-17: ordinal not in  range(128) 
+0

您使用的是什麼版本的Python,2.x或3.x? Unicode處理在兩個版本之間發生了變化,因此瞭解您使用的是哪個版本非常重要,因此我們可以爲您提供正確的答案。 – rmunn

+0

我正在使用python 2.7.3。使用pycharm IDE –

回答

4

下降的str(),或將其更改爲unicode()

print jsonline[key].encode('utf-8') 

print unicode(jsonline[key]).encode('utf-8') 

在Python 2.x中,str()試圖將其內容轉換爲8位的字符串。由於您傳遞的是Unicode對象,因此它會使用默認編碼(ascii),並在達到.encode('utf-8')呼叫之前失敗。使用unicode()在這裏是多餘的,如果你得到的數據是全部文本,但是如果其中的一些是整數,這將是有用的,所以我推薦後者。

+1

它工作。謝謝! –