Python中的反向repr函数[重复]

Posted

技术标签:

【中文标题】Python中的反向repr函数[重复]【英文标题】:Reverse repr function in Python [duplicate] 【发布时间】:2014-09-13 04:47:15 【问题描述】:

如果我有一个带字符的字符串(0x610x620xD),则该字符串的repr 函数将返回'ab\r'

有没有办法进行反向操作:如果我有字符串'ab\r'(带有字符0x610x620x5C0x72),我需要获取字符串0x610x620xD

【问题讨论】:

您可以使用hexord,但'\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(最近一次调用最后):文件“”,第 1 行,在 文件“C:\Python27\lib\ast.py”,第 49 行, 在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 " ", 第 1 行 ab\r ^ SyntaxError: 行继续符后出现意外字符 @user3479125 您没有足够的引号 - 请注意,在我的示例中,s 中有两对(一对单,一对双:"'...'")。否则,literal_eval 无法将其评估为字符串。 为什么不只是eval @SeF 见这里:Using python's eval() vs. ast.literal_eval().

以上是关于Python中的反向repr函数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python中的repr()函数

理解 Python 中的 repr() 函数

python中的str和repr函数的区别

python之反射和内置函数__str____repr__

《Python》反射内置函数(__str____repr__)

Matlab repr 函数