Я использовал str() для строки с байтовым литералом, как мне отменить операцию?

#python #django

#python #django

Вопрос:

Итак, у меня был двоичный файл, подобный следующему b"My name is ...n blah blah" , затем я использовал I used str() для него, что привело к "b'My name is ...\n blah blah'" тому, как я могу отменить это и снова получить переменную с байтовым литералом?

Ответ №1:

Вы можете использовать ast.literal_eval :

 >>> from ast import literal_eval
>>> s = literal_eval("b'My name is ...\n blah blah'")
>>> s
b'My name is ...n blah blah'
  

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

1.Для ясности: хотя это работает, это не очень быстро, и если у вас есть код, который преобразуется в и из bytes repr s по замыслу (это не просто какой-то способ восстановления данных, которые вы случайно преобразовали неправильно), у вас почти наверняка проблема с XY. Производственный код не должен полагаться на это преобразование.