我有一堆以小时为单位的字符串,我想将其转换为分钟
一些示例输入字符串:
50 hour
5 hrs
3 hours
5hrs
1hour
我正在尝试提出一些正则表达式来捕获所有这些并将整个事物转换为分钟值的整数
上面会变成:
3000
300
180
300
60
我不太熟悉正则表达式。我开始玩这样的东西:
re.sub(r'^\d+[a-z]', 'blah', string)
然而,这似乎并没有引起多少注意。只有一个数字后跟一个字母的情况。此外,我不确定如何实际转换为分钟
请您参考如下方法:
re.sub可以接受替换函数而不是替换字符串。该函数将与匹配对象一起调用,函数的返回值用作替换字符串。
>>> import re
>>>
>>> strings =[
... '50 hour',
... '5 hrs',
... '3 hours',
... '5hrs',
... '1hour',
... ]
>>>
>>> for original in strings:
... replaced = re.sub(r'(\d+)\s*(?:hours?\b|hrs?\b)',
... lambda m: str(int(m.group(1)) * 60),
... original)
... print('{} => {}'.format(original, replaced))
...
50 hour => 3000
5 hrs => 300
3 hours => 180
5hrs => 300
1hour => 60
