gpt4 book ai didi

验证时间输入的 Pythonic 方法(仅适用于 Hr、Min、Sec)

转载 作者:太空狗 更新时间:2023-10-30 02:00:01 26 4
gpt4 key购买 nike

在我的应用程序中,我正在以字符串格式在变量中输入时间,例如Values = '12,12,12' .

现在我需要验证它h<24 M<60 S<60等等,我想要最终输出 '%H:%M:%S'格式。
为了得到这个,我尝试了 datetime.time().

我第一次尝试使用 values = '12'然后'12,12,12' .

In [1]: import datetime

In [2]: values = '12'

In [3]: d = datetime.time(values)

TypeError Traceback (most recent call last)
/mypc/test/<ipython console> in <module>()
TypeError: an integer is required

In [4]: d = datetime.time(int(values))

In [5]: d
Out[5]: datetime.time(12, 0)

In [6]: d.strftime('%H:%M:%S')
Out[6]: '12:00:00'

In [7]: s = d.strftime('%H:%M:%S')

In [8]: s
Out[8]: '12:00:00'

In [9]: values = '12,12,12'

In [10]: d = datetime.time(int(values))

ValueError: invalid literal for int() with base 10: '12,12,12'

但它的工作原理如下。

In [24]: datetime.time(12,12,12).strftime('%H:%M:%S')
Out[24]: '12:12:12'

所以问题是 datetime.time() 将输入作为整数和 '12,12,12' string 不能转换为 int。

是否有任何其他方式(除了正则表达式)来仅对 Hr:M:S 进行验证。

最佳答案

您必须解压这些值:

>>> values = '12,12,12'
>>> values = ast.literal_eval(values)
>>> datetime.time(*values)
datetime.time(12, 12, 12)

如果给定的时间无效,最后一条语句将引发错误。

如“wim”指出的那样,为了避免零填充数字出现问题,可以将第二行更改为:

values = (int(i) for i in values.split(','))

values = map(int, values.split(','))

关于验证时间输入的 Pythonic 方法(仅适用于 Hr、Min、Sec),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8876320/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com