这是一个基本的perl功能我必须相信你可以在python中做到但我在文档中找不到任何东西,除非当然暗示......
以下是解析字符串中时间字段的一个非常简单的示例:
time=re.search("(\d+):(\d+):(\d+)", variable)
我知道是否会成功创建匹配对象。但我找不到的是找出与3种模式相匹配的值的方法,这样我就可以将它们填充到小时,分钟和秒等变量中。我发现的所有用法示例只显示了一组()s。
-mark
答案 0 :(得分:6)
hours, minutes, seconds = re.search("(\d+):(\d+):(\d+)", variable).groups()
答案 1 :(得分:3)
您可以使用groups
方法获取匹配的组
>>> variable = '1:2:3'
>>> time=re.search("(\d+):(\d+):(\d+)", variable)
>>> print time
<_sre.SRE_Match object at 0x7f3917211918>
>>> print time.groups()
('1', '2', '3')
如果您只想要第一组:
>>> print time.group(1)
1
或第二组(time.group(2)
)等。请注意,这些始终是字符串。
如果您愿意,甚至可以为群组命名:
>>> time=re.search("(?P<HR>\d+):(\d+):(\d+)", variable)
>>> time.group("HR")
'1'
答案 2 :(得分:3)
使用time.strptime
或datetime.datetime.strptime()
:
import time
stime = time.strptime(variable, '%H:%M:%S')
hours, minutes, seconds = stime.tm_hour, stime.tm_min, stime.tm_sec
答案 3 :(得分:1)
您可以使用命名组:
>>> pattern = re.compile("(?P<hours>\d+):(?P<minutes>\d+):(?P<seconds>\d+)")
>>> time = re.search(pattern, "12:34:56")
>>> time.group("hours")
'12'
>>> time.group("minutes")
'34'
>>> time.group("seconds")
'56'
答案 4 :(得分:1)
我会做得更好一点:
>>> import re
>>> variable = "12:34:56"
>>> time = re.search("(?P<hours>\d+):(?P<minutes>\d+):(?P<seconds>\d+)", variable)
>>> time.group('hours')
'12'
有关详细信息,请参阅docs for re
。
答案 5 :(得分:0)
使用m.groups()
列出所有匹配项。
答案 6 :(得分:0)