打印unicode字符串在python 3.2中工作但在2.7中不能工作

时间:2012-08-30 13:33:14

标签: python unicode

我使用Python 3.2处理带有utf-8文本的文本文件:

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'< / p>

我试过

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

(还尝试了一些其他的encode()和unicode()函数组合),它总是打印出来:

  

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

如何在Python 2.7中将unicode文本打印到控制台?

1 个答案:

答案 0 :(得分:2)

请参阅the docs中的unicode_csv_reader()

作为替代方案,如果控制台理解utf-8并且除了将它们打印到控制台之外的其他项目上不进行任何文本处理,则可以跳过解码/编码:

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