Страницы

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

понедельник, 6 января 2020 г.

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

#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²


А вот возможно перевести его в человекочитаемый вид и вписать обратно в список?
    


Ответы

Ответ 1



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

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

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