Как разделить строку на int и байтовый литерал - PullRequest
0 голосов
/ 27 июня 2018

У меня есть следующая строка:

str = "3, b'\\xf3\\xc71\\xe9\\xad_\\xce\\x8bI\\x1c\\x04Y\\xd5z\\xa2Q'"

Мне нужно разделить его, чтобы получить две переменные, int и bytestring, например:

number = 3
bytestring = b'\\xf3\\xc71\\xe9\\xad_\\xce\\x8bI\\x1c\\x04Y\\xd5z\\xa2Q'

Что я пытался сделать:

number, bytestring = [s for s in str.split(", ")]
int_number = int(number)
bytestring_in_bytes = bytestring.encode()

К сожалению, это не сработало для тестовой строки, и я получил что-то вроде этого:

bytesring_in_bytes = b"b'\\xf3\\xc71\\xe9\\xad_\\xce\\x8bI\\x1c\\x04Y\\xd5z\\xa2Q'"

Есть идеи, как получить строку из строки?

1 Ответ

0 голосов
/ 27 июня 2018

То, что у вас есть, похоже на текстовое представление (в Python repr(..)) строки байтов.

Вы можете использовать ast.literal_eval(..), чтобы преобразовать это в строку байтов:

from ast import <b>literal_eval</b>

bytestring_in_bytes = <b>literal_eval(</b>bytestring<b>)</b>

Обратите внимание, что если он содержит str ing, int и т. Д., То тип bytestring_in_bytes будет также str, int и т. Д.

...