在python中使用字母数字字符串中的a-z字符进行拆分

时间:2010-06-01 21:19:54

标签: python

我有像“5d4h2s”这样的字符串,我希望从该字符串中获得5,4和2,但我也想知道5与d配对,而且4与h等配对等。有没有一种简单的方法可以在不通过char解析char的情况下执行此操作?

2 个答案:

答案 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