如何解决如何使其成为单线?将列表转换为一堆参数
---- 92 ParaMETER result selected observations
height1 weight1 height2 weight2
i1 67.445523 163.692389
i2 68.649190 160.084811
i3 69.503911 164.720010
i4 59.850261 145.704159
i5 65.341938 155.586984
i6 64.142009 154.335001
i7 67.030368 158.768813
i8 73.236515 164.704340
i9 63.279277 149.784500
i10 69.001848 160.063428
i11 63.930208 152.827710
i12 70.719334 164.885704
i13 63.614565 150.071072
i14 70.533320 160.722483
i15 78.417676 172.298652
i16 67.404942 158.310596
i17 62.504967 150.899428
i18 62.122630 150.024298
i19 72.999194 166.771223
i20 74.935107 170.820610
i21 60.372876 149.152520
i22 76.748649 167.462369
i23 75.433331 171.773607
i24 65.717553 160.134888
i25 67.301426 158.713710
我想使其像这样一线:
from datetime import datetime
ds = "2020.10.10.12.30.59"
y,M,d,h,m,s = [int(x) for x in ds.split('.')]
dt = datetime(y,s)
print(dt)
这当然是行不通的。但是可以通过某种方式完成吗?
解决方法
从那时起,您只需使用unpacking进行传播:
dt = datetime(*[int(x) for x in ds.split('.')])
请注意*
。这样会将数据“传播”到每个参数中。
您在这里确实使用了错误的工具;使用datetime.strptime()
代替:
dt = datetime.strptime(ds,"%Y.%m.%d.%H.%M.%S")
,并避免所有拆分和转换为整数的工作。此外,这样可以更好地处理错误的输入,将%Y
的{{1}}模式接受两位数的年份,但是分割转换方法将接受它,但是给您错误的日期(例如strptime()
会给您20.10.10.12.30.59
而不是引发异常)。
如果必须使用拆分和转换,则可以使用datetime.datetime(20,10,12,30,59)
将map()
应用于每个拆分结果,然后使用int
来应用结果整数作为单独的参数:
*
,这也适用于生成器表达式:
dt = datetime(*map(int,ds.split(".")))
演示:
dt = datetime(*(int(s) for s in ds.split(".")))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。