gpt4 book ai didi

python - 使用 Python 库或正则表达式将持续时间转换为数字分钟

转载 作者:行者123 更新时间:2023-12-01 08:53:14 27 4
gpt4 key购买 nike

我有一个自由格式的持续时间字符串,其中包含小时和分钟值,其中之一可以是可选的

1 hour
12 hours 3 mins
47 mins
10 hours
1 min

我必须将它们转换为分钟数。首先搜索了可以转换时间和持续时间的Python库,但字符串格式不允许使用这种方法

然后我尝试使用正则表达式来提取数字组:

re.search("(\d+)?.*(\d+\w)", string).group(1)
re.search("(\d+)?.*(\d+\w)", string).group(2)

在大多数情况下,当存在小时和分钟值或仅存在分钟值时(因为我将第一组设置为可选),当小时为单位数(1 小时)时,此正则表达式会失败。另外,因为我只提取没有描述性文本(小时和/或分钟)的数字组,所以当只有小时值(有两位数字)时,计算是错误的 - 例如 10 小时,并且错误地提取为第二组为分钟。

最佳答案

您可以将 re.findall 与以下正则表达式一起使用:

import re
s = '''1 hour
12 hours 3 mins
47 mins
10 hours
1 min'''
for h, m in re.findall(r'(?=\d+ *hours?| *\d+ *min(?:ute)?s?)(?:(\d+) *hours?)?(?: *(\d+) *min(?:ute)?s?\b)?', s, flags=re.IGNORECASE):
print(int(h or 0) * 60 + int(m or 0))

输出:

60
723
47
600
1

关于python - 使用 Python 库或正则表达式将持续时间转换为数字分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52967470/

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