Python:UTF-8问题(再次…)
我有一个数据库,每天两次与外部web源同步。此web源包含一组条目,这些条目具有名称和有关这些名称的一些额外信息 其中一些名称很愚蠢,我想在将它们插入我自己的数据库时重命名它们。要重命名这些愚蠢的名字,我有一本标准字典:Python:UTF-8问题(再次…),python,django,encoding,utf-8,Python,Django,Encoding,Utf 8,我有一个数据库,每天两次与外部web源同步。此web源包含一组条目,这些条目具有名称和有关这些名称的一些额外信息 其中一些名称很愚蠢,我想在将它们插入我自己的数据库时重命名它们。要重命名这些愚蠢的名字,我有一本标准字典: RENAME_TABLE = { "Wσird" : "Weird", ... } 如您所见,这就是UTF-8发挥作用的地方。此函数用于重命名所有有问题的条目: def rename_all_entries(): all_keys = RENAME_TABLE.key
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\u TABLE[entry.name]
时,我得到了一个KeyError
异常
现在我迷路了,我该怎么办?我有
# -*- coding: utf-8 -*-
…位于Python文件的顶部。您收到的错误是由于您不想在字典中使用unicode字符串造成的。回想一下,在Python2.x中(我假设您正在使用它),默认的字符串类型是8位,而不是unicode,因此您实际上是在用8位字符串为字典键入关键字。要声明unicode字符串,请使用u“MyUnicode字符串”。那么它应该被接受为密钥 您收到的错误是由于您希望不在字典中的unicode字符串引起的。回想一下,在Python2.x中(我假设您正在使用它),默认的字符串类型是8位,而不是unicode,因此您实际上是在用8位字符串为字典键入关键字。要声明unicode字符串,请使用u“MyUnicode字符串”。那么它应该被接受为密钥