我想创建一个模板字符串作为表达式的可能值:
'\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'
围绕这个想法?也许是另一种编码?
答案 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