Я хотел бы сделать строку, которая включает в себя «\ х», но я получаюсделать строку в том числе х в питоне
invalid \x escape
ошибку.
a = '\x'+''.join(lstDES[100][:2])+'\x'+''.join(lstDES[100][2:])
Как исправить?
Я хотел бы сделать строку, которая включает в себя «\ х», но я получаюсделать строку в том числе х в питоне
invalid \x escape
ошибку.
a = '\x'+''.join(lstDES[100][:2])+'\x'+''.join(lstDES[100][2:])
Как исправить?
двойной обратной косой черты, чтобы остановить Python интерпретировать его как специальный символ:
'\\x'
или использовать необработанный строковый литерал:
r'\x'
В обычных строк Python литералов, обратные косые сигнализировать о начале escape-последовательность и \x
- это последовательность, которая определяет символы по их шестнадцатеричному значению байта.
Вы можете использовать строку форматирования вместо всех конкатенации здесь:
r'\x{0[0]}{0[1]}\x{0[2]}{0[3]}'.format(lstDES[100])
Если вы пытаетесь определить два байта на основе шестнадцатеричных значений из lstDES[100]
, то вам придется использовать другой подход; производя строку с символами \
, x
и две шестнадцатеричные цифры не будут магически вызывать ту же интерпретацию. Python использует для строковых литералов.
Вы бы использовать binascii.unhexlify()
function для этого вместо:
import binascii
a = binascii.unhexlify(''.join(lstDES[100][:4]))
В Python \
используется, чтобы избежать символы, такие как \n
для перевода строки или \t
для язычка.
Чтобы иметь строку буква '\x'
, вам нужно использовать две обратные косые черты, чтобы эффективно избежать другой, поэтому она становится '\\x'
.
In [199]: a = '\\x'
In [200]: print(a)
\x
Вам нужно \\x
потому что \
, используемые для эвакуации символов:
>>> s='\\x'+'a'
>>> print s
\xa
Попробуйте сделать сырец строку следующим образом:
a = r'\x'+''.join(lstDES[100][:2]) + r'\x'+''.join(lstDES[100][2:])