代码之家  ›  专栏  ›  技术社区  ›  Deniz Dogan

python:utf-8问题(再次…)

  •  0
  • Deniz Dogan  · 技术社区  · 14 年前

    我有一个每天两次与外部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 如果找到,则重命名条目。但是,我得到了 KeyError 使用时出现异常 RENAME_TABLE[entry.name] .

    现在我迷路了,我该怎么办?我有。。。

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

    …在python文件的顶部。

    1 回复  |  直到 14 年前
        1
  •  4
  •   abc    14 年前

    您收到的错误是由于您不希望在字典中的Unicode字符串造成的。回想一下,在Python2.x中(我假设您正在使用),默认的字符串类型是8位,而不是Unicode,因此您实际上是用8位字符串为字典设置了键。要声明unicode字符串,请使用u“我的unicode字符串”。那么它应该被接受为一把钥匙。