python2.7 - 从带有unicode的.txt文件中读取字典

时间:2011-11-21 23:08:06

标签: python unicode dictionary

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

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:这不是问题。读取没有卷曲dict-bits的普通list.txt会返回中文字符没有问题,所以我的猜测是我没有正确处理字典部分。任何想法都将不胜感激!

2 个答案:

答案 0 :(得分:3)

你的编码没有问题......看看这个:

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

有一件事是打印一个unicode字符串,另一个正在打印它的表示。

答案 1 :(得分:2)

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