给定一个令牌列表和这些令牌的正确的已知类型表示,如何将该类型映射到该列表?如果类型是int
的或floats
,我可以通过字符串调用int(x)
将值转换为int,但是如果我的类型是list
(或者说是numpy.array
),那么就失败了。什么是最Python式的转换方式?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)]
相关:How to convert a list with multiple types to binary in Python?
您需要的是^{} ,它是为此目的而设计的。在
编辑:根据您评论中的问题:
^{pr2}$然后您可以在您的
type_key
中使用literal_eval_to_array()
-记住函数调用和实例化与Python是相同的。在我认为最好的方法是创建一个类型到转换函数的映射,然后您可以拥有任意复杂的转换器
输出:
^{pr2}$这使得它成为一个非常灵活的方案,您可以以非常灵活的方式清理和处理您的输入
相关问题 更多 >
编程相关推荐