python - 具有单个元素的元组的literal_eval

标签 python abstract-syntax-tree

我正在使用 ast.literal_eval(str) 来计算包含元组的字符串,例如 ('a', 'b', 'c')。但是,如果由于某种原因该元组仅包含单个元素,则表达式将忽略括号并仅返回该元素:

>>> string = "('a')"
>>> x = ast.literal_eval(string)
>>> x
'a'

有没有一种非黑客的方法来解决这个问题?有时,我可能有一个元组的元组,例如 (('a','b')) ,因此不能只检查类型,这一事实加剧了这个问题。谢谢!

最佳答案

这是因为 ('a') 不是元组,而是被视为 a 的字符串。只有一个对象的元组定义为 ('a',) (注意 ,)

>>> type('a')
<type 'str'>    <-- String
>>> type(('a'))
<type 'str'>    <-- String
>>> type(('a',))
<type 'tuple'>  <-- Tuple

关于python - 具有单个元素的元组的literal_eval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39150590/

相关文章:

python - ValueError : set_wakeup_fd only works in main thread on Windows on Python 3. 8 使用 Django 3.0.2 或 Flask 2.0.0

python - Scipy 稀疏矩阵特殊减法

python - DNNRegressor 训练输入多个标签

clang - Clang 项目的 AST

java - 使用antlr3的简单标准表达式解析器

javascript - 评论的语法规则

c - 打印抽象语法树

typescript - 是否可以使用 typescript 编译器 API 将评论作为 AST 中的节点获取?

python - 列出文件中的 unicode 单词

javascript - 使用 Django 和 Javascript 验证表单字段时出现 ValueError