在Python中按字母分割字母数字字符串
我有一些像“5d4h2s”这样的字符串,我想从中提取出5、4和2这些数字,同时还想知道5是和d配对的,4是和h配对的,等等。有没有简单的方法可以做到这一点,而不需要一个个字符去分析?
2 个回答
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
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])")