Hoo*_*ked 1 python casting type-conversion
给定一个令牌列表以及这些令牌的正确的已知类型表示,如何将该类型映射到列表中?如果类型是int或floats我可以调用int(x)字符串将值转换为int,但如果我的类型是list(或说a numpy.array),则会失败.进行转换的最pythonic方式是什么?eval这里不是一个选项,因为数据基本上是未经过清理的.一个例子:
line     = "0 0 62.9695 [16.859,-17.1135,46.6351] [7.1759,29.3009,83.1399]"
tokens   = line.split()
type_key = [int,int,float,list,list] # Lists do not convert properly here
print [T(x) for T,x in zip(type_key,tokens)]
你想要的是ast.literal_eval(),它是为此目的而设计的.
>>> ast.literal_eval("[16.859,-17.1135,46.6351]")
[16.859, -17.1135, 46.6351]
编辑:根据您的评论中的问题:
def literal_eval_to_array(literal):
    return np.array(ast.literal_eval(literal))
然后,你可以简单地使用literal_eval_to_array()你的type_key-请记住,一个函数调用和实例都是一样到Python.
| 归档时间: | 
 | 
| 查看次数: | 432 次 | 
| 最近记录: |