2017-01-20 6 views
1

У меня есть список mylist в Словаре с проблемой кодирования:Кодирование в списке Словаре

>>print mylist 
[{u'param1': u'foo',u'param2': u'Special char \xe9'}, ...] 

>>for item in mylist: 
>> print item 
{u'param1': u'foo',u'param2': u'Special char \xe9'} 
... 

>>for item in input: 
>> for i in item: 
>>  print 'Key: %s Value: %s' % (i, item[i]) 
Key: param1 
Value: foo 
Key: param2 
Value: Special char é 

(\xe9 является é)

Как я могу изменить кодировку, чтобы непосредственно:

>>print mylist 
[{param1: 'foo',param2: 'Special char é'}, ...] 
+1

Вы не можете, потому что это просто результат вызова '__repr__' на членов список; но более того, вам ** не нужно **, так как нет абсолютно никаких оснований полагаться на этот вывод. –

ответ

1

На самом деле он уже закодирован правильно. Если вы, однако, print словарь, он вызывает repr(..) по ключам и значениям, а затем используется escape-кодирование. Если вы, однако, print(..) определите определенное значение, оно покажет его, как вы хотите, поскольку используется str(..). \xe9 только для программистов удобства, что вы можете легко скопировать вывод и кормить его, например, в программе:

$ python 
Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
[GCC 5.4.0 20160609] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> mylist = [{u'param1': u'foo',u'param2': u'Special char \xe9'}] 
>>> print(mylist[0]['param2']) 
Special char é 
Смежные вопросы