Добрый день всем!
Во-первых, название темы не совсем то, что происходит. Но я не мог придумать ничего лучше! У меня очень простой случай, и я не могу понять, почему он действует так:
name = 'Balikóné'
seq = []
seq.append(name)
print name
print seq[0]
print seq
Вот результат:
Balikóné
Balikóné
['Balik\xc3\xb3n\xc3\xa9']
Я использую Python 2.7.5. В качестве первой строки моего кода у меня есть
# -*- coding: utf-8 -*-
чтобы python понял, что у меня есть некоторые «недопустимые» символы ascii в моей строке. В противном случае я получаю:
Non-ASCII character '\xc3' in file 'my_path', but no encoding declared
Почему это выглядит по-разному, когда я печатаю список и элемент из списка?
repr
элементов в списке, который для байтов, отличных от ASCII, показывает их как\x
escape-последовательности. Связанный: stackoverflow.com/questions/17560620/ - person Wooble   schedule 29.04.2014str(listobj)
в файл так же, какprint
пишет вstdout
. Вы получаете строковое представление объекта Python. Это другой вопрос; не записывайте списки непосредственно в файл. - person Martijn Pieters   schedule 29.04.2014u
в начале:name = u'Balikóné'
вместе с битом# -*- coding
. bit.ly/unipain полезно смотреть и/или читать. - person Wooble   schedule 29.04.2014ast.literal_eval()
. Не то, чтобы это была хорошая идея и не очень совместимая с другими инструментами. - person Martijn Pieters   schedule 29.04.2014