我有一个文本形式的持续时间列表,例如,['142 Days 16 Hours', '128 Days 9 Hours 43 Minutes', '10 Minutes']
我需要构建一个函数来获取这些持续时间,而不是得出总天数.
特定文本可以是一天、天和小时、小时和分钟、一组分钟或一天、小时和分钟.
我try 了以下几种方法:
def parse_dates(data):
days = int(re.match(r'\d+\sDay', data)[0].split(' ')[0]) if re.match(r'\d+\sDay', data) is not None else 0
hours = int(re.match(r'\d+\sHour', data)[0].split(' ')[0]) if re.match(r'^\d+Hour*s$', data) is not None else 0
minutes = int(re.match(r'\d+\sMinute', data)[0].split(' ')[0]) if re.match(r'\d+\sMinute', data) is not None else 0
days += hours / 24
days += minutes / 1440
return days
无论使用re.match()
还是re.search()
,提供的函数都会失败,这让我相信表达式本身存在问题.
但是,小时和分钟始终显示为0.我如何修复我的regex
,或设计出更好的解决方案,以适当地解析这些文件?