вычитание двоичного выражения из строки

#python

#питон

Вопрос:

У меня есть файл, в котором в любом случае слова сохраняются в двоичном представлении в стиле python:

 file = ["b'first'", "b'second'"]  

Возможно ли извлечь это и сохранить битовое представление в переменную (для выполнения декодирования) без изменения значений между одинарными кавычками, а затем кодировать и декодировать строку?

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

1. Он уже находится в переменной, что вы подразумеваете под «сохранить его в переменной»?

2. Вы можете использовать ast.literal_eval() для декодирования строк в байтовые строки.

3. переменная «Сохранить в» немного вводила в заблуждение, мне нужно байтовое представление, потому что мне нужно декодировать его в utf-8. ast звучит как хорошее решение.

Ответ №1:

да

  gt;gt;gt; file = ["b'first'", "b'second'"] gt;gt;gt; for it in file: ... print(ast.literal_eval(it)) ... b'first' b'second'  

также вы можете применить map функцию

 import ast file = ["b'first'", "b'second'"]  file_2=map(ast.literal_eval,file) #lt;map object at 0x0000000002E8EFA0gt;  file_3=list(file_2) #[b'first', b'second']  

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

1. разве eval не является проблемой безопасности, особенно в данном случае, потому что чтение из простого файла?

2. Использовать ast.literal_eval() , нет eval() .

Ответ №2:

Просто используйте нарезку:

 file = ["b'first'", "b'second'"] bytestrings = [bytes(x[2:-1], 'ascii') for x in file]  

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

1. Это также был подход, который я имел в виду, но я отложил этот подход по очевидной причине жесткого кодирования. Это может сработать для моей проблемы в 99,9% случаев, но я всегда буду иметь в виду эту проблему.