是否有一个高层次的方式来读取从输出文件行并请有内容的结构识别的类型?

StackOverflow https://stackoverflow.com/questions/900396

  •  23-08-2019
  •  | 
  •  

假设我有想读一个输出文件,并且每个线由接合几种类型一起,预先考虑和附加列表括号创建

[('tupleValueA','tupleValueB'), 'someString', ('anotherTupleA','anotherTupleB')]

我想读的行。现在,我可以读他们,并在字符串操作分配值和类型,但我在想,如果有Python的这种更高层次的方法。

建立一个函数来做到这一点后,我试图找到一个更高的水平的方法,但一个也没找到。

有帮助吗?

解决方案

你所寻找的是 EVAL 。但请记住,这个功能将评估并执行该行。所以不要在不可信的输入永远运行它!

>>> print eval("[('tupleValueA', 1), 'someString']")
[('tupleValueA', 1), 'someString']

如果你有超过生成的输出文件中的脚本控制,那么我会建议你使用 JSON 编码。 JSON格式非常相似,列表和字典的Python字符串表示。而且将更加安全和可靠的读取。

>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> json.loads('["foo", {"bar": ["baz", null, 1.0, 2]}]')
["foo", {"bar": ["baz", null, 1.0, 2]}]

其他提示

在描述该问题通常被称为系列化 JavaScript对象符号(JSON)是一个受欢迎的序列化协议。

也许这将是更好的数据存储与如咸菜在模块首先,而是采用普通字符串。这样你可以避免很多附带eval并获得更强大的解决方案的问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top