python连接/格式化regex可能的十六进制值

2024-06-28 15:27:22 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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


Tags: inasciijoindigitsx9cuppercasex4cx8c
2条回答

既然你在和角色打交道,就要和角色打交道。你知道吗

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

\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

相关问题 更多 >