如果我有一个包含字符(0x61
0x62
0xD
)的字符串,那么该字符串的repr
函数将返回'ab\r'
。
是否有逆向操作的方法:如果我有一个字符串'ab\r'
(包含字符0x61
0x62
0x5C
0x72
),我需要得到字符串0x61
0x62
0xD
。
我认为你需要的是 ast.literal_eval
:
>>> s = repr("ab\r")
>>> s
"'ab\\r'"
>>> from ast import literal_eval
>>> literal_eval(s)
'ab\r'
>>> s="ab\\r"
>>> s
'ab\\r'
>>> print(s)
ab\r
>>> literal_eval(s)
Traceback (most recent call last):
File "", line 1, in
File "C:\Python27\lib\ast.py", line 49, in literal_eval
node_or_string = parse(node_or_string, mode='eval')
File "C:\Python27\lib\ast.py", line 37, in parse
return compile(source, filename, mode, PyCF_ONLY_AST)
File "", line 1
ab\r
^
SyntaxError: 行继续字符后出现意外字符
- Ivan Borshchovs
中有两对引号(一个单引号,一个双引号:"'...'"
)。否则,literal_eval
无法将其评估为字符串。 - jonrsharpeeval
? - SeF
hex
和ord
,但'\r'
不是两个字符。而且,'\r'
是0xd
,而不是0x13
。 - jonrsharpe