python join/format 正则表达式可能的十六进制值

python join/format possible hex values for regex

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

'\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]])

但不幸的是 join 并没有随意对待 '\x':

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'

有什么想法吗?也许是另一种编码?

既然你在处理角色,那就处理角色。

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

\x 将尝试像 \n(换行符)一样转义 \x,您需要使用 \ 来使用第一个 \ 转义第二个 \.

然而,这两个\只在你输入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