2010-03-28 2 views
0

외부 웹 소스와 하루에 두 번 동기화되는 데이터베이스가 있습니다. 이 웹 소스에는 여러 이름의 항목과이 이름에 대한 추가 정보가 들어 있습니다.Python : UTF-8 문제 (다시 ...)

이러한 이름 중 일부는 어리석은 이름이고 내 데이터베이스에 삽입 할 때 이름을 바꿀 수 있습니다. 이 바보 이름을 이름을 변경하려면, 내가 같은 표준 사전을 가지고 : 당신이 볼 수 있듯이 UTF-8로 활동하기 시작하는 곳

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

, 이것은이다.

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 -*- 

... 파이썬 파일의 맨 위에.

답변

4

받은 오류는 사전에없는 유니 코드 문자열 때문입니다. 파이썬 2.x에서 (내가 사용하고 있다고 가정), 기본 문자열 유형은 유니 코드가 아닌 8 비트이므로 실제로는 8 비트 문자열로 사전에 키를 입력하는 것입니다. 유니 코드 문자열을 선언하려면 u "my unicode string"을 사용하십시오. 그런 다음 키로 받아 들여야합니다.

+0

오, 이런, 정말 고마워! :) –