如何在python中分隔数字和字符串?

如何在python中分隔数字和字符串?,python,python-3.x,Python,Python 3.x,我从前端获取包含字符串和数字的字符串,例如:“欧莱雅巴黎L'Huile指甲油,224玫瑰芭蕾舞,13.5ml” 现在,我想将13.5ml到13.5作为一个值分开,并将ml作为另一个值插入后端表中。您可以尝试将re.findall与regex模式\d+(?:\.\d+?ml一起使用: input = "L'Oreal Paris L'Huile Nail Paint, 224 Rose Ballet, 13.5ml" matches = re.findall(r'(\d+(?:\.\d+)?)(m

我从前端获取包含字符串和数字的字符串,例如:
“欧莱雅巴黎L'Huile指甲油,224玫瑰芭蕾舞,13.5ml”


现在,我想将
13.5ml
13.5
作为一个值分开,并将
ml
作为另一个值插入后端表中。

您可以尝试将
re.findall
与regex模式
\d+(?:\.\d+?ml
一起使用:

input = "L'Oreal Paris L'Huile Nail Paint, 224 Rose Ballet, 13.5ml"
matches = re.findall(r'(\d+(?:\.\d+)?)(ml)', input)
print(matches)
这张照片是:

[('13.5', 'ml')]
编辑:

要捕获已知的单元列表,可以将上述正则表达式模式修改为以下内容:

\d+(?:\.\d+)?(?:GM|KG|LIT)
这将使用更改来表示每个可能的单位,您可以根据需要添加新单位

data = "L'Oreal Paris L'Huile Nail Paint, 224 Rose Ballet, 13.5ml, 14dl"

for i in range(len(data)-1):
    try:
        # if number is before letter  
        int(data[i])
        if data[i+1].isalpha():
            data = data[:i+1] + ' ' + data[i+1:] # add space between number and letter
    except:
        pass

print (data)
输出:

L'Oreal Paris L'Huile Nail Paint, 224 Rose Ballet, 13.5 ml, 14 dl

它总是遵循某种格式吗?你的代码是做什么的?它打印的是什么?代码如何知道您想要分离出
(13.5,“ml”)
,而不是
(224,“Rose”)
?是否始终存在度量单位?@Ivan此代码将删除所有文本,并将13.5 ml打印为输出。但我需要13.5 ml之间的空间,但这仅适用于
ml
单位。我假设,如果他/她想在数据库中保存
ml
,是因为它并不总是
ml
@Ivan是的,我知道:-)。。。我的答案可以很容易地更新,以匹配一个单位的更通用的模式。@Ivan如果用户现在提供不同的单位,如GM、KG、LIT,我应该如何在运行时过滤该值loop@pavithra请检查我的更新答案,它为您提供了处理多个单元的选项。