Как правильно декодировать строку utf-8 со смешанными восьмеричными escape-символами? - PullRequest
0 голосов
/ 18 июня 2020

При разборе /proc/self/mountinfo на Linux некоторые поля каждой строки, описывающей каждое монтирование, вполне могут содержать символы в кодировке utf-8. Поскольку формат строки mountinfo разделяет поля пробелами, mountinfo экранирует по крайней мере (пробел) и \ (backsla sh) как «\ 040» и «\ 134» (буквально!). Как мне преобразовать значение поля ("/ tmp / a \ ?", Python строка '/tmp/a\\134\\040?') обратно в строку без экранирования?

Есть ли способ лучше, чем следующий, довольно сложный (от { ссылка })? То есть с меньшим количеством цепочек кодирования / декодирования?

>>> s='/tmp/a\\134\\040?'
>>> s.encode().decode('unicode-escape').encode('latin-1').decode('utf-8')
'/tmp/a\\ ?'

PS: Не спрашивайте, почему кто-то в здравом уме будет использовать такие имена путей; это просто для иллюстрации;)

...