Кодировка списка Python

У меня есть словарь, который выглядит так.

{ latex schlüpfer : [455, 'latex schl\xc3\xbcpfer', 5.0, 0.0, 0.0, 24.6] }

Почему значение моего списка в индексе 1 отображается в другой кодировке?

Я пытался заменить его ключом, а также добавить его, и он всегда выходит одним и тем же.

Даже когда я иду:

print key # latex schlüpfer 
print [key] # latex schl\xc3\xbcpfer

В чем дело?

Я пытаюсь проверить, существует ли этот элемент, но проблемы с кодировкой, похоже, не позволяют мне это сделать, поскольку я сравниваю латексный schl\xc3\xbcpfer с латексным schlüpfer.


person Adders    schedule 26.04.2018    source источник


Ответы (2)


объекты внутри списка печатаются с использованием их метода __repr__. это воспроизводит ваш вывод:

# coding=utf-8
s = 'latex schlüpfer'
print(s)
print(repr(s))

он печатает

latex schlüpfer
'latex schl\xc3\xbcpfer'
person hiro protagonist    schedule 26.04.2018
comment
Да, игнорируйте слова, ха-ха - person Adders; 26.04.2018
comment
Так должно ли сравнение значений быть правильным или они также будут их версиями repr? - person Adders; 26.04.2018
comment
сравнение не будет использовать repr (repr — это просто [короткое] строковое представление объекта; сравнение вызывает эти методы). - person hiro protagonist; 26.04.2018

Вы можете попытаться закодировать весь словарь, используя следующий код:

mydict = {k: unicode(v).encode("utf-8") for k,v in mydict.iteritems()}

Это использует понимание словаря.

person ButterJones    schedule 26.04.2018