У меня есть программа, в которую я записываю вывод python check_output в файл. Я забыл установить кодировку "utf-8" и все выходные данные в байтах. Я записал эти байтовые значения в файл. Теперь у меня в файлах есть строка типа «b 'math \ xf0 \ x9d», содержащая как ASCII, так и hex. Как я могу получить только значения ASCII и преобразовать шестнадцатеричные значения, такие как \ xf0 \ x9d, в их исходные значения?
Чтобы ответить на этот вопрос, мне нужен способ преобразования строки с байтовыми значениями обратно в байты. В приведенном ниже примере opt - это байты, temp - это строка. Как я могу преобразовать temp в opt снова?
Подробнее: это код, который я изначально хотел запустить. то, что я получаю в переменной opt, имеет шестнадцатеричные значения. Я надеялся преобразовать его в строку, я бы избавился от них, но это не работает.
latex = "a+b"
opt = check_output(["latexmlmath", "--quiet", "--cmml=-", latex])
temp = str(opt)
# also tried
temp = str(opt).encode("utf-8")
Значения opt и temp:
b'<?xml version="1.0" encoding="UTF-8"?>\n<math xmlns="http://www.w3.org/1998/Math/MathML" alttext="a+b" display="block">\n <apply>\n <plus/>\n <ci>\xf0\x9d\x91\x8e</ci>\n <ci>\xf0\x9d\x91\x8f</ci>\n </apply>\n</math>\n'
b'<?xml version="1.0" encoding="UTF-8"?>\n<math xmlns="http://www.w3.org/1998/Math/MathML" alttext="a+b" display="block">\n <apply>\n <plus/>\n <ci>\xf0\x9d\x91\x8e</ci>\n <ci>\xf0\x9d\x91\x8f</ci>\n </apply>\n</math>\n'