Dan*_*Dan 5 python string parsing python-2.4
我正在将文件读入python 2.4,其结构如下:
field1: 7
field2: "Hello, world!"
field3: 6.2
Run Code Online (Sandbox Code Playgroud)
我们的想法是将其解析为一个字典,该字典fieldfoo作为键,以及冒号之后的任何值作为值.
我想转换无论是冒号后以它的"真实"数据类型,即,'7'应该转换为一个int,"Hello, world!"为一个字符串,等等需要解析的唯一数据类型是整数,浮点数和字符串.python标准库中是否有一个函数可以让人轻松进行这种转换?
应该用来解析的唯一内容是我写的,所以(至少在这种情况下)安全不是问题.
首先将您的输入解析为对的列表fieldN: some_string.您可以使用re模块轻松完成此操作,或者甚至可以更简单地使用索引的左右切片line.strip().find(': ').然后在值上使用文字eval some_string:
>>> import ast
>>> ast.literal_eval('6.2')
6.2
>>> type(_)
<type 'float'>
>>> ast.literal_eval('"Hello, world!"')
'Hello, world!'
>>> type(_)
<type 'str'>
>>> ast.literal_eval('7')
7
>>> type(_)
<type 'int'>
Run Code Online (Sandbox Code Playgroud)
对于较旧的 python 版本,就像所询问的那样,eval可以使用该函数,但是为了减少邪恶,dict应该使用全局命名空间作为第二个参数,以避免函数调用。
>>> [eval(i, {"__builtins__":None}) for i in ['6.2', '"Hello, world!"', '7']]
[6.2, 'Hello, world!', 7]
Run Code Online (Sandbox Code Playgroud)