Страницы

Поиск по вопросам

среда, 13 февраля 2019 г.

Python. Перевести байт-код в человекочитаемый вид в элементе списка

Изначально имеется строка
>>> string = '50.6,383,149,1.9,786, 4 -4, [Ne]3s²3p², DIA,5.43'
которая была разбита в лист по разделителю ","
>>> print(re.split(r',', string)) ['50.6', '383', '149', '1.9', '786', ' 4 -4', ' [Ne]3s\xc2\xb23p\xc2\xb2', ' DIA', '5.43']
Элемент [Ne]3s²3p² был переведен в байт код '[Ne]3s\xc2\xb23p\xc2\xb2'.
Его можно успешно принтовать в человеческом виде
>>> print('[Ne]3s\xc2\xb23p\xc2\xb2'.decode('utf-8')) [Ne]3s²3p²
А вот возможно перевести его в человекочитаемый вид и вписать обратно в список?


Ответ

У вас не байт-код (содержимое *.pyc файлов), а просто текстовое представление объекта типа str в Питоне, возвращаемое функцией repr()
Вы его видите, потому что по умолчанию при печати списка в Питоне вызывается repr() для каждого элемента списка.
Если вы хотите другой результат, то форматируйте список, возвращаемый функцией re.split() самостоятельно, например, чтобы напечатать каждый элемент списка на отдельной строчке:
for элемент in ваш_список: print(элемент)

Дополнительно, результат намекает что вы используете Питон 2. В этом случае, либо добавьте на самом верху from __future__ import unicode_literals или явно используйте u"" префикс, чтобы создать Юникодную строчку (из константы в исходном коде) вместо использования байт, иначе вы можете кракозябы получить при печати

Комментариев нет:

Отправить комментарий