2014-01-31 3 views
0

Я создаю программу, которая может заменить символы в сообщении символами, введенными пользователем в словарь. Некоторые из символов указаны в текстовом файле. Таким образом, чтобы импортировать их, я использовал этот код:Замена словаря - Python

d = {} 
    with open("dictionary.txt") as d: 
     for line in d: 
      (key, val) = line.split() 
      d[str(key)] = val 

Он работает хорошо, за исключением того, что добавляет «ï» ¿»в начале словаря. Массив подлежащего замене текста называется «словами». Это код, у меня есть для этого:

for each in d: 
      words = ";".join(words) 
      words = words.replace(d[each],each) 
      words = words.split(";") 
      print words 

Когда я ударил F5, однако, я получаю груз gobbledook. Вот пример: \ ХеР \ Xbb \ XBF \ ХеР \ Xbb \ xbfA +/084 &

Я просто новичок в Python, так что любая помощь будет оценена.

+2

Как создать dictionary.txt? (И почему вы использовали UTF-16?) – geoffspear

+0

Кажется, у вас проблема с кодировкой, какова ваша кодировка 'dictionary.txt'? Это было сделано с помощью Блокнота? И что означает _gobbledook_? : D –

ответ

1

Убедитесь, что вы сохранили файл в файле dictionnary в UTF-8. В Notepad ++ (Windows) есть функции преобразования, если ваш прежний файл не является utf-8.

«я» ¿»картина связана с Latin-1 кодировке (у вас не будет, если вы используете UTF-8 кодировке)

Тогда вместо ул (ключ), использование key.encode («utf-8»), чтобы избежать возможных других ошибок в будущем.

Если вы хотите узнать больше, вы посмотрите на хороший Python документации об этом можно: http://docs.python.org/2/howto/unicode.html

Смежные вопросы