Здравствуйте.
Есть некий код на питоне:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
name = raw_input() # пользователь вводит на русском языке, на выходе получаем строку
print name[0] # хочу получить первый символ строки, однако консоль выдает символ неправильной кодировки
print name # хотя таким образом, выводит строку так, как и ввел пользователь
� - вот так выводит консоль
При использовании введённой строки полностью, в коде, операции выполняются корректно:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Цифра и соответствующие ей символы
char_list = [
[1, 'аисъ'],
[2, 'бйты'],
[3, 'вкуь'],
[4, 'глфэ'],
[5, 'дмхю'],
[6, 'енця'],
[7, 'ёоч'],
[8, 'жпш'],
[9, 'зрщ']
]
name = raw_input() # вводим в ниж. регистре кириллицей
# ... еще ввод...
a = [name, ...] # вношу полученные переменные в список
def number(word): # Сумма цифр соответствующих символам строки, на выходе, до однозначного вида (7 напр.)
num = 0
for char in word:
for i in char_list:
if char in i[1]:
num += i[0]
if num % 9 == 0:
return 9
else:
return num % 9
def full_name(ls): # полученные суммы на выходе в виде списка ([2, 4, 5, ...] например)
"""
ls - <list> слов полученных путем raw_input
"""
full_nm = []
total = 0
for i in ls:
full_nm.append(number(i))
for d in full_nm: # сумма элементов списка до однозначного числа(3 напр.) и добавление в конец этого списка
total += d
if total % 9 == 0:
full_nm.append(9)
else:
full_nm.append(total % 9)
return full_nm
print full_name(a)
Что нужно дописать чтобы print name[0] не выводил �, а выводил "в" например.
Вроде это связанно с кодировкой, но справиться самостоятельно не получилось. Менял # -*- coding: utf-8 -*- на # coding: utf-8 и добавлял в начало:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
... не помогло.
Благодарю за внимание.