2010-03-28 46 views
0

我有一個數據庫,每天兩次與外部Web源同步。這個網絡資源包含一些條目,其中包含名稱和一些關於這些名稱的額外信息。Python:UTF-8問題(再次...)

一些這些名稱都是愚蠢的,我想將它們插入到自己的數據庫時將其重命名。要重命名這些無聊的名字,我有一個標準的字典這樣:

RENAME_TABLE = { "Wσird" : "Weird", ... } 

正如你可以看到,這是在UTF-8開始發揮作用。這是執行重命名所有的問題項功能:

def rename_all_entries(): 
    all_keys = RENAME_TABLE.keys() 
    entries = Entry.objects.filter(name__in=all_keys) 
    for entry in entries: 
     entry.name = RENAME_TABLE[entry.name] 
     entry.save() 

所以它試圖在RENAME_TABLE找到舊名稱,如果找到重命名的條目。但是,當使用RENAME_TABLE[entry.name]時,我得到一個KeyError例外。

現在我迷路了,我該怎麼辦?我有...

# -*- coding: utf-8 -*- 

...在Python文件的頂部。

回答

4

您收到的錯誤是由於您希望不在字典中的unicode字符串。回想一下,在Python 2.x(我假設你使用的是),默認的字符串類型是8位,而不是Unicode,所以你實際上用8位字符串鍵入字典。要聲明一個unicode字符串,請使用u「我的unicode字符串」。那麼它應該被接受爲關鍵。

+0

哦,該死的,非常感謝! :) – 2010-03-28 21:35:49