我正在更新一個愛好應用程序,它是用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
你可以添加一個字符串樣本嗎? –