在Python中按字母分割字母数字字符串

1 投票
2 回答
1345 浏览
提问于 2025-04-15 23:25

我有一些像“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])")

撰写回答