Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:UTF-8问题(再次…)_Python_Django_Encoding_Utf 8 - Fatal编程技术网

Python:UTF-8问题(再次…)

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

我有一个数据库,每天两次与外部web源同步。此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
中查找旧名称,如果找到,则重命名条目。但是,当使用
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字符串”。那么它应该被接受为密钥