Многократные преобразования строки с обратной косой чертой - PullRequest
0 голосов
/ 01 мая 2018

Я полностью запутался со строковым кодированием в Python. Я прочитал ряд других ответов, но ни один из них не показывает, что на самом деле происходит в последних трех строках кода ниже:

filename = "/path/to/file.txt" #textfile contains only the string "\bigcommand"

with open(filename,'r') as f:
    file = list(f)

val = file[0]                         #val = '\\bigcommand\n'
valnew = val.encode('unicode-escape') #valnew = b'\\\\bigcommand\\n'
valnewnew = str(valnew,'utf-8')       #valnewnew = '\\\\bigcommand\\n'

Почему переменная valnew внезапно становится строкой байтов? Я думал, что это будет так же, как и раньше - но только с удвоенными символами escape?

Есть ли более короткий способ сделать это, чем извилистые последние три строки, чтобы получить результат valnewnew?

1 Ответ

0 голосов
/ 07 мая 2018

Это даст вам вывод valnewnew:

val = file[0].encode('unicode-escape').decode()
with open('t', 'r') as f:
    file = list(f)

    val = file[0].encode('unicode-escape').decode() # value: '\\\\bigcommand\\n'

Когда вы кодируете строку в python3.x, вы кодируете строку в байтах, которые затем необходимо было впоследствии декодировать, чтобы получить строку в результате.

Если вы дадите некоторое представление о том, что вы пытаетесь сделать, я могу попробовать расширить.

...