我有一个数据库,它每天两次与外部网络源同步。此Web源包含一组条目,这些条目具有名称和一些有关这些名称的额外信息。
其中一些名称很愚蠢,我想在将它们插入我自己的数据库时重命名它们。要重命名这些愚蠢的名字,我有一个标准字典:
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
中找到旧名称,并在找到时重命名该条目。但是,使用KeyError
时,我会收到RENAME_TABLE[entry.name]
个例外。
现在我迷路了,我该怎么办?我有......
# -*- coding: utf-8 -*-
...在Python文件的顶部。
答案 0 :(得分:4)
您收到的错误是由于您想要不在字典中的unicode字符串。回想一下,在Python 2.x中(我假设您正在使用它),默认字符串类型是8位,而不是unicode,因此您实际上是使用8位字符串键入字典。要声明一个unicode字符串,请使用u“my unicode string”。然后它应该被接受为关键。