2011-11-21 80 views
3

前段时间我参加了一门中文研究课程,我认为用python编写一个flashcard程序对我来说是一个很好的练习。我将闪存卡列表存储在.txt文件的字典中,目前为止没有任何问题。当我尝试将用utf-8编码的文件加载到我的程序中时,真正的问题就出现了。我的代码摘录:现在python2.7 - 阅读一个带有unicode的.txt文件的字典

import codecs 

f = codecs.open(('list.txt'),'r','utf-8') 
quiz_list = eval(f.read()) 

quizy = str(quiz_list).encode('utf-8') 

print quizy 

,例如,如果LIST.TXT包括:

{'character1':'男人'} 

印什么是真正的

{'character1': '\xe7\x94\xb7\xe7\x86\xb1'} 

显然,有一些严重的编码问题在这里,但我不能为我的生活理解这里发生的。我正在使用支持utf-8的终端,因此不是标准的cmd.exe:这不是问题。读取一个没有卷积字典的普通list.txt返回的中文字符没有问题,所以我的猜测是我没有正确处理字典部分。任何想法将不胜感激!

回答

3

没有什么不对您的编码......看看这个:

>>> d = {1:'男人'} 
>>> d[1] 
'\xe7\x94\xb7\xe4\xba\xba' 
>>> print d[1] 
男人 

一件事是打印unicode字符串另一个是印刷其代表性。

+0

@ephemient谢谢两位!我明白了,显然我应该把我的研究做得更好一些。谢谢你的时间。 – user1058744

2

str(quizy)调用repr(quizy['character1'])它生成字符串值的ASCII表示。如果你只是print quizy['character1'],你会发现Python字符串中的字符代码是Unicode。