作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
literal_eval
文档状态:
Safely evaluate an expression node or a Unicode or Latin-1 encoded string containing a Python literal or container display. The string or node provided may only consist of the following Python literal structures: strings, numbers, tuples, lists, dicts, booleans, and None.
我想解析一个表示元组的 unicode 字符串。为什么我得到以下输入的 ValueError: malformed string
?
print literal_eval(unicode('abc'))
print literal_eval(unicode('c,d,e'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.5/ast.py", line 84, in literal_eval
return _convert(node_or_string)
File "/usr/lib/python3.5/ast.py", line 55, in _convert
return tuple(map(_convert, node.elts))
File "/usr/lib/python3.5/ast.py", line 83, in _convert
raise ValueError('malformed node or string: ' + repr(node))
ValueError: malformed node or string: <_ast.Name object at 0x7f1da47e7860>
但是,这个例子确实有效:
print literal_eval(unicode('1,2,3'))
(1, 2, 3)
最佳答案
literal_eval
只解析 literals .您的字符串是变量名称的元组(abc
、c
、d
、e
)。相反,您需要一个字符串元组或一个带逗号的字符串。任何一个都需要两层引号。
# string
print(literal_eval("'abc'"))
'abc'
print(literal_eval("'c,d,e'"))
'c,d,e'
# tuple of strings
print(literal_eval("'c','d','e'"))
('c', 'd', 'e')
你的最后一个例子是一个整数元组,它们都是文字,所以它解析成功。
关于Python 的 literal_eval 表示字符串 'a,b,c' 格式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40591465/
我是一名优秀的程序员,十分优秀!