我正在更新一个爱好应用程序,它是用Ubuntu 14.04上的Python 2.7编写的,它将json中的铁路历史数据存储起来。我现在用它来处理英国的数据。python str()函数的结果不同于__str __()函数的结果
从法国数据开始时,我遇到了一个困惑我的问题。我有一个类CompaniesCache
其实施__str__()
。在那个实现里面,一切都在使用str的。假设我实例化一个CompaniesCache
并分配到一个变量companies
。当我在IPython2,给出命令print companies
,我得到一个错误:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe0' in position 184: ordinal not in range(128)".
好吧,这是不奇怪。测试。如预期的那样,str(companies)
重现错误。但是,companies.__str__()
成功没有问题,因为print company.__str__()
。这里有什么问题?
这里CompaniesCache对象的__str__方法的代码:
class CompaniesCache(object):
def __init__(self, railrefdatapath):
self.cache = restoreCompanies(railrefdatapath)
def __getitem__(self, compcode):
return self.cache[compcode.upper()]
def __str__(self):
s = ''
for k in sorted(self.cache.keys()):
s += '\n%s: %s' % (k, self[k].title)
return s
这是CompaniesCache对象,其中包含在其高速缓存的dict Company对象的代码。公司对象没有实现__str __()方法。
请问您可以包含一些代码吗? – FlipTack
您的'__str__'方法正在返回一个unicode对象,其中包含非ascii字符。 – user2357112
你可以添加一个字符串样本吗? –