任务是将产品的属性与其字符串分开。我正在使用正则表达式来分隔所需的部分,但很难区分“L”和“ML”(或“L”和“ML”)。“kg”和“g”的情况类似,因为正则表达式总是选择较短的字符串
prod = 'TestProduct- 200 ML x24'
searchobj = re.findall('([0-9]+).*(g|kg|ltr|l|ml)\s*x*[*]*([0-9]+)', prod, re.I)
print(searchobj)
#output
[('200', 'L', '24')]
如何使输出如下
[('200', 'ML', '24')]
谢谢
你可以用
见regex demo
详细信息
(\d+(?:\.\d+)?)
-组1:一个或多个数字,然后是一个点的可选序列,然后是一个或多个数字\s*
-0+空格(g|kg|ltr|l|ml)
-第2组:字符(序列)之一\s*
-0+空格x*
-0个或更多x
个字符\**
-0个或更多*
个字符(\d+(?:\.\d+)?)
-第3组:一个或多个数字,然后是一个点的可选序列,然后是一个或多个数字您可以通过将形式
(g|kg|ltr|l|ml)\s
更改为\s(g|kg|ltr|l|ml)\s
(表达式前后需要一个空格)来指定只需要形式为(g|kg|ltr|l|ml)\s
的整个单词相关问题 更多 >
编程相关推荐