【发布时间】:2010-05-27 20:47:58
【问题描述】:
我正在从 ZODB(Zope 对象数据库)接收一些数据。我收到一个mybrains 对象。然后我做:
o = mybrains.getObject()
我在我的项目中收到一个“Person”对象。那我就可以了
b = o.name
我在课堂上做print b:
José Carlos
和print b.name.__class__
<type 'unicode'>
我有很多“Person”对象。它们被添加到列表中。
names = [o.nome, o1.nome, o2.nome]
然后,我尝试用这些数据创建一个文本文件。
delimiter = ';'
all = delimiter.join(names) + '\n'
没问题。现在,当我执行print all 时,我有:
José Carlos;Jonas;Natália
Juan;John
但是当我尝试创建它的文件时:
f = open("/tmp/test.txt", "w")
f.write(all)
我收到这样的错误(位置不完全相同,因为我更改了名称)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 84: ordinal not in range(128)
如果我已经可以用“正确”的形式打印来显示它,为什么我不能用它写一个文件?我应该使用哪种编码/解码方法来编写包含这些数据的文件?
我使用的是 Python 2.4.5(无法升级)
【问题讨论】: