2014-12-05 108 views
1

\ X字符串我想作一個字符串,其中包括「\ X」,但我得到使包括蟒蛇

invalid \x escape 

錯誤。

a = '\x'+''.join(lstDES[100][:2])+'\x'+''.join(lstDES[100][2:]) 

我該如何糾正它?

回答

6

雙反斜線從將其解釋爲特殊字符停止的Python:

'\\x' 

或使用原始字符串字面量:

r'\x' 

在常規的Python字符串文字,反斜槓信號的開始一個轉義序列,而\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])) 
1

在Python \用於轉義字符,如\n一個換行符或\t的標籤。

要使用文字字符串'\x',您需要使用兩個反斜槓,一個用於有效地轉義另一個,因此它將變爲'\\x'

In [199]: a = '\\x' 

In [200]: print(a) 
\x 
1

你需要\\x因爲\用於轉義字符:

>>> s='\\x'+'a' 
>>> print s 
\xa 
1

儘量使原始字符串如下:

a = r'\x'+''.join(lstDES[100][:2]) + r'\x'+''.join(lstDES[100][2:])