2014-10-29 2 views
0

Эй, ребята, им пытаются работать с ЕВОЙ python2.7, и он чувствует, как адработы с ЕВЫМ питоном

моего файл имеет # - - кодирование: UTF-8 - - заявил на верхнюю

у меня есть список:

letters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 
    'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'Ä', 
    'Ö', 'Ü'] 

и им пытаются сделать это:

word = 'FÜNF' 
new_string = '' 
for letter in word: 
    new_string += str(letters.index(letter)) 

я получаю ValueError для письма не в строке

и если я сделать

word = 'FÜNF' 
for letter in word: 
    print letter 

, что я получаю: F ├ £ N F

может sbdy пожалуйста объяснить, как почини это? заранее спасибо.

+0

Soddin 'Germans .. Nowt but trouble :) –

+0

Я не уверен в исправлении, но похоже, что когда вы итерации обрабатываете каждый байт как символ. – Linuxios

+0

@Linuxios: Мой плохой, переполнение стека переформатировало его, чтобы оно выглядело не так. –

ответ

0

Ваш файл зашифрован в utf8. Но вы определяете байтовую строку, поэтому ваша строка имеет не 4, а 5 байтов, потому что Ü берет два байта. Чтобы определить строку Юникода, вы должны ввести

word = u'FÜNF' 

Это также буквы, которые вы видите на своей консоли. Вероятно, ваша консоль не может работать с utf8.

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