Python中的反向repr函数[重复]
Posted
技术标签:
【中文标题】Python中的反向repr函数[重复]【英文标题】:Reverse repr function in Python [duplicate] 【发布时间】:2014-09-13 04:47:15 【问题描述】:如果我有一个带字符的字符串(0x61
0x62
0xD
),则该字符串的repr
函数将返回'ab\r'
。
有没有办法进行反向操作:如果我有字符串'ab\r'
(带有字符0x61
0x62
0x5C
0x72
),我需要获取字符串0x61
0x62
0xD
。
【问题讨论】:
您可以使用hex
和ord
,但'\r'
不是两个字符。而'\r'
是0xd
,而不是0x13
。
我使用repr(将\r转换为两个字符),因为我需要查看所有特殊字符,并且我需要与repr相反的功能,因为我需要输入特殊字符福尔曼\ch。是的,当然是 0xD,抱歉弄错了
如果我写 str="ab\r" 不是两个字符,而是当我从我的 GUI 界面读取它时
【参考方案1】:
我想你要找的是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(最近一次调用最后):文件“s
中有两对(一对单,一对双:"'...'"
)。否则,literal_eval
无法将其评估为字符串。
为什么不只是eval
?
@SeF 见这里:Using python's eval() vs. ast.literal_eval().以上是关于Python中的反向repr函数[重复]的主要内容,如果未能解决你的问题,请参考以下文章