2012-08-30 26 views
3

我使用Python 3.2來處理使用UTF-8文本的文本文件:打印unicode字符串的作品在Python 3.2,但不是在2.7

import codecs 
import csv 
f = codecs.open('07362853300091_trade_turquoise_errNo_031.csv', 
             'r','utf-8', 'ignore') 
text = csv.reader(f, delimiter=',', quotechar='"') 
for row in text: 
    for item in row: 
     print(item) 

工作的罰款。

我現在有使用Python 2.7解釋器來運行代碼,並將其打印:

「\ XD7 \ X97 \ XD7 \ X99 \ XD7 \ X95 \ XD7 \ X91 \ XD7 \ X94 \ XD7 \ xa8 \ XD7 \ XA2 \ XD7 \ xa6 \ XD7 \ X99 \ XD7 \ X95 \ XD7 \ x9f」

我試圖

item.encode('utf-8') 
print unicode(item, errors='ignore') 

(和也嘗試編碼()和Unicode的一些其它組合( )功能),它總是打印:

U '\ u05de \ u05e9 \ u05d9 \ u05db \ u05ea \ u05e9 \ u05d9 \ u05e7'

我怎樣才能打印Unicode文本控制檯在Python 2.7?

+0

Unicode字符串看起來是正確的;這是'חיובהרעציון'的逃脫表示。 –

+0

'item.encode('utf-8')''之前和之後的'type(item)'是什麼?我想'item'是一個unicode對象。編碼完成後,它是Python 2.7中的一個'str'對象。只需打印此文件,而不用使用'unicode()'進行後續轉換。 –

回答

2

參見unicode_csv_reader()the docs

正如你可以跳過解碼/編碼如果控制檯理解UTF-8,你不這樣做就不是將它們打印到控制檯中的其他項目的任何文字處理替代:

with open('07362853300091_trade_turquoise_errNo_031.csv', 'rb') as file: 
    for row in csv.reader(file): 
     print "\n".join(row)