HDR*_*HDR 2 python types list type-conversion
我对python很新,我不知道怎么做以下.
我有一个foo包含某个图的元数据和测量值的列表.例如,plotID,调查日期,测量员的首字母,几个测量值和一个分类变量.
foo= ['plot001', '01-01-2013', 'XX', '10', '12.5', '0.65', 'A']
Run Code Online (Sandbox Code Playgroud)
因为这些数据是从.txt读取的,所以所有列表项都是字符串.我的问题是:如何将每个列表项转换为适当的数据类型?.我可以创建一个包含所需数据类型的列表:
dType= ['str', 'str', 'str', 'int', 'float', 'float', 'float', 'str']
Run Code Online (Sandbox Code Playgroud)
如果我可以将dTypeas函数中的每个项目应用于匹配元素,那将是很好的foo:
out= [str(foo[0]), str(foo[1]), str(foo[2]), int(foo[3]), float(foo[4]), float(foo[5]), float(foo[6]), str(foo[7])]
Run Code Online (Sandbox Code Playgroud)
但我相信一定有更好的解决方案!谢谢你的任何建议!
而不是字符串列表,dType列出内置工厂:
dType= [str, str, str, int, float, float, str]
Run Code Online (Sandbox Code Playgroud)
(你有一个额外的float我删除)
然后使用zip:
[t(x) for t,x in zip(dType,foo)]
Out[6]: ['plot001', '01-01-2013', 'XX', 10, 12.5, 0.65, 'A']
Run Code Online (Sandbox Code Playgroud)
额外奖励:您甚至可以获得幻想并制作自己的工厂功能并以同样的方式应用它们functools.partial.比如,如果您希望该日期变成datetime对象:
def datetime_factory(format,s):
from datetime import datetime
return datetime.strptime(s,format)
from functools import partial
dType= [str, partial(datetime_factory,'%d-%m-%Y'), str, int, float, float, str]
[t(x) for t,x in zip(dType,foo)]
Out[29]: ['plot001', datetime.datetime(2013, 1, 1, 0, 0), 'XX', 10, 12.5, 0.65, 'A']
Run Code Online (Sandbox Code Playgroud)
(def在这里需要我们自己的工厂,因为partial只允许你部分应用最左边的参数,并且首先strptime要求字符串格式化)
| 归档时间: |
|
| 查看次数: |
3359 次 |
| 最近记录: |