python join / format for regex的可能十六进制值

时间:2016-01-07 23:25:12

标签: python string hex

我想创建一个模板字符串作为表达式的可能值:

'\x1C,\x2C,\x3C,\x4C,\x5C,\x6C,\x7C,\x8C,\x9C,\xAC,\xBC,\xCC,\xDC,\xEC,\xFC'

以这样的方式:

from string import digits, ascii_uppercase
','.join(['\x'+i+'C' for i in digits+ascii_uppercase[:6]])

但不幸的是,加入不会对待' \ x' litterally:

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: truncated \xXX escape

例如,与双斜线不同:

','.join(['\\x'+i+'C' for i in digits+ascii_uppercase[:6]])
\\x0C,\\x1C,\\x2C,\\x3C,\\x4C,\\x5C,\\x6C,\\x7C,\\x8C,\\x9C,\\xAC,\\xBC,\\xCC,\\xDC,\\xEC,\\xFC'

围绕这个想法?也许是另一种编码?

2 个答案:

答案 0 :(得分:1)

因为你正在处理角色,所以要处理角色。

','.join(chr(x) for x in range(0x1c, 0x100, 0x10))

答案 1 :(得分:0)

\x会尝试逃离\x \n(换行符),您需要使用\\来使用第一个\转义第二个\ }}

但是,只有当您在shell中输入时才会显示两个\,但是当您将其打印出来时,另一个将会消失:

>>> text = '\\x0C,\\x1C,\\x2C,\\x3C,\\x4C,\\x5C,\\x6C,\\x7C,\\x8C,\\x9C,\\xAC,\\    xBC,\\xCC,\\xDC,\\xEC,\\xFC'
>>> text
'\\x0C,\\x1C,\\x2C,\\x3C,\\x4C,\\x5C,\\x6C,\\x7C,\\x8C,\\x9C,\\xAC,\\xBC,\\xCC,\\xDC,\\xEC,\\xFC'
>>> print(text)
\x0C,\x1C,\x2C,\x3C,\x4C,\x5C,\x6C,\x7C,\x8C,\x9C,\xAC,\xBC,\xCC,\xDC,\xEC,\xFC