Как преобразовать сырую строку в обычную

Есть сырая строка, которую нужно превратить в обычную. В ней есть кириллические символы. На зарубежных форумах увидел подобный способ:

s = r'тест\nfoo'
s.encode().decode('unicode-escape')

Но на выходе я получаю что-то типа этого:

ÑеÑÑ
foo

Каким образом можно провести корректное преобразование кириллицы?


Ответы (1 шт):

Автор решения: MaxU

Если я правильно понял - вы хотите операцию, обратную операции экранирования.

Т.е. получить из строки "тест\\nfoo" --> "тест\nfoo".

Можно попробовать воспользоваться ast.literal_eval():

In [64]: from ast import literal_eval

In [65]: s = r'тест\nfoo\ttext after <TAB>'

In [66]: print(s)
тест\nfoo\ttext after <TAB>

In [67]: res = literal_eval(f'"{s}"')
# NOTE: ------------------->  ^   ^
In [68]: print(res)
тест
foo     text after <TAB>
→ Ссылка