Конвертировать байты -> строка -> обратно в байты и получить исходное значение - PullRequest
2 голосов
/ 29 марта 2020

Я проверил все вопросы Stackoverflow по этому вопросу, и никто не может ответить на мою проблему. Мне нужно преобразовать \\ в \.
Отредактировано:
Это то, что я пытаюсь :

>>> a = b'\xe5jb\x8c?Q$\xf3\x1d\x97^\xfa3O\xa6U.txt'
>>> b = str(a)
>>> b
"b'\\xe5jb\\x8c?Q$\\xf3\\x1d\\x97^\\xfa3O\\xa6U.txt'"
>>> b = b.replace('b\'','')
>>> b = b[:len(b)-1]
>>> b
'\\xe5jb\\x8c?Q$\\xf3\\x1d\\x97^\\xfa3O\\xa6U.txt'
>>> c = bytes(b,'utf8')
>>> c
b'\\xe5jb\\x8c?Q$\\xf3\\x1d\\x97^\\xfa3O\\xa6U.txt'
>>> a == c
False

Как мне сделать a==c True? Я пытался

 .replace("\\\\","\\") 

, но это не помогает. Строка остается прежней. Мне нужно сохранить байт в переменной 'a' в файл в виде текста и перезвонить. Python -3,8, Windows = 10

Ответы [ 2 ]

1 голос
/ 29 марта 2020

Вы можете преобразовать c в строку с помощью метода decode, а затем использовать ast.literal_eval для оценки его как байтового литерала после его обтекания b'...':

from ast import literal_eval
a = b'\xe5jb\x8c?Q$\xf3\x1d\x97^\xfa3O\xa6U.txt'
c = b'\\xe5jb\\x8c?Q$\\xf3\\x1d\\x97^\\xfa3O\\xa6U.txt'
c = literal_eval("b'%s'" % c.decode())
print(a == c)

This выходы: True

0 голосов
/ 29 марта 2020

Используйте функцию .replace () для строки

...