从字母中拆分数字

Splitting numbers from letters

我有一列包含如下值:

7D  
13M  
24D  
55D  

我想将这些值分成一组数字和另一组字母,以便我可以进一步评估。

我非常接近使用带有此功能的内置正则表达式

def string_split(type: str):
  res = re.findall(('\d+'), type)
  
  if ["d"] in res:
    return "days"
  if ["m"] in res:
    return "months"

现在我的 re.findall 只返回数字而不是字母。

不要使用 re.findall()。您的字符串始终是一个数字后跟一个字母。因此,请使用仅匹配该模式的正则表达式,而不是拆分它。

def string_split(type: str):
    m = re.match('(\d+)([A-Z])', type)
    if m:
        num = m.group(1)
        unit = m.group(2)
        if unit == 'D':
            return num, 'days'
        elif unit == 'M':
            return num, 'months'
        else:
            raise ValueError('Invalid unit ' + unit)
    else:
        raise ValueError('Invalid interval ' + type)