首先,我对python很陌生。我现在想知道如何在某一列(csv)中替换一个时间字符串,当该时间大于当前时间。
我正在构建的脚本依赖于petl,所以我使用的是petl。首先,用petl打开源csv作为table1。它包含多列,其中一列是 "结束时间"。在这一列中,我想用@time来代替这个时间?(为了以后的HTML格式化),只有当它大于当前时间时才会被替换。
时间的格式是 "12:15"。然而,当使用>运行这一行时,我没有看到任何变化,但使用<时,该列中的所有值都发生了变化。
这是我正在努力解决的问题。
current=time.localtime()
table2= petl.convert(table1, ' End time', lambda v, row: '@'+v+'?' if time.strptime(v, '%H:%M') > current else v, pass_row=True)
我还想知道如何打印或查看time. strptime的值,这可能吗?
任何想法都非常感激!
如果你只把小时和分钟传给time.strptime,strptime会自动用1900,1,1来填补年,月,日的缺失值--所以当然总是小于 time.localtime()
.
如果你的表中包含了24小时格式的时间,你可以直接将表中的时间字符串与狭义上的本地时间(只是时间部分)进行比较。
要实现这一点,可以像这样使用时间格式化。
current = time.strftime('%H:%M',time.localtime())
在shell中启动一个python解释器,并玩弄你计算的中间步骤,这通常是很有帮助的。只要输入变量,你就会看到它的评估结果。
>>> t2 = time.strptime('12:15', '%H:%M')
>>> t2
time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=12, tm_min=15, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1)