2014-12-05 98 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:])