преобразовать текст байта (тип является строкой) в строку в Python - PullRequest
0 голосов
/ 05 июля 2018

У меня есть такая строка: s = "b'1f\xe6\xb5\x8b\xe7\xbb\x98'"

Как преобразовать его обратно в исходную строку?

Я пытаюсь использовать eval(s), однако получаю SyntaxError: bytes can only contain ASCII literal characters.

1 Ответ

0 голосов
/ 05 июля 2018

Не используйте eval, это опасно. Вместо этого используйте ast.literal_eval и затем декодируйте в строку, как @Amadan говорит:

import ast
s = r"b'1f\xe6\xb5\x8b\xe7\xbb\x98'"
res = ast.literal_eval(s).decode()
print(res)  # --> '1f测绘'

Как сказано в комментариях, мой s на самом деле имеет repr, который выглядит как "b'1f\\xe6\\xb5\\x8b\\xe7\\xbb\\x98'". Не могли бы вы подтвердить, как выглядят ваши print(repr(your_string)) и print(your_string)?

...