从字母中拆分数字
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)
我有一列包含如下值:
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)