0

首先,我对所有 python 都很陌生。我现在正试图弄清楚当时间大于当前时间时如何替换某个列(csv)中的时间字符串。

我正在构建的脚本依赖于 petl,所以这就是我正在使用的。首先,源 csv 使用 petl 作为 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 用作值,这可能吗?

任何想法都受到高度赞赏!

4

1 回答 1

0

如果你只将小时和分钟传递给 time.strptime,strptime 会自动用 1900, 1, 1 填充年、月、日的缺失值 - 所以当然总是小于time.localtime().

如果您的表格包含 24 小时格式的时间,您可以直接将表格中的时间字符串与狭义的本地时间(仅 TIME 部分)进行比较。

为此,请使用时间格式,如下所示:

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)
于 2020-04-28T11:03:29.237 回答