我有像“5d4h2s”这样的字符串,我希望从该字符串中获得5,4和2,但我也想知道5与d配对,而且4与h等配对等。有没有一种简单的方法可以在不通过char解析char的情况下执行此操作?
答案 0 :(得分:8)
如果您的输入没有比5d4h2s
更复杂:
>>> import re
>>> s = "5d4h2s"
>>> p = re.compile("([0-9])([a-z])")
>>> for m in p.findall(s):
... print m
...
('5', 'd')
('4', 'h')
('2', 's')
如果有,你可以轻松调整正则表达式,例如
>>> p = re.compile("([0-9]*)([a-z])")
接受如下输入:
>>> s = "5d14h2s"
最后,您可以将正则表达式压缩为:
>>> p = re.compile("([\d]+)([dhms])")
答案 1 :(得分:0)
对于时间字符串,您可以尝试以下操作:
m = re.match("(\d+d)?(\d+h)?(\d+m)?(\d+s)?", "5d4h2s")
print m.group(1) # Days
print m.group(2) # Hours
print m.group(3) # Minutes
print m.group(4) # Seconds
print int(m.group(1)[:-1]) # Days, number