【问题标题】:Reverse repr function in Python [duplicate]Python中的反向repr函数[重复]
【发布时间】: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 界面读取它时

标签: python repr


【解决方案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
猜你喜欢
  • 2013-10-20
  • 2014-01-20
  • 2020-07-29
  • 2014-04-24
  • 2013-01-30
  • 1970-01-01
  • 2018-04-10
  • 2022-09-25
相关资源
最近更新 更多