我的数据库中有一长串不同产品的字符串,每个字符串都有产品标签和产品尺寸(包括包装尺寸)。我想把字符串分成两个子字符串:第一部分直到大小,第二部分包含液体的大小,可能还有包装的大小。 例如,我有以下字符串:
str1 = 'PRODUCTA 1909 SUPERIOR GIN 89 PROOF 750ML'
str2 = 'PRODUCTB FLAV GIN 70 PROOF VAP 1.5L 2PK'
str3 = 'PRODUCTB FLAV GIN 70 PROOF VAP 1.5L 6PK'
str4 = 'PRODUCTC FLAV GIN 70 PROOF VAP 50ML 5PK'
我想得到的是:
str1a = 'PRODUCTA 1909 SUPERIOR GIN 89 PROOF'
str1b = '750ML'
str2a = 'PRODUCTB FLAV GIN 70 PROOF VAP'
str2b = '1.5L 2PK'
str2a = 'PRODUCTB FLAV GIN 70 PROOF VAP'
str2b = '1.5L 6PK'
str4a = 'PRODUCTC FLAV GIN 70 PROOF VAP'
str4b = '50ML 5PK'
这里的困难在于,很多产品的产品标签上都有数字(例如string1中的1909),有些产品的尺寸不仅是升的数量(1.5升、750毫升等),还有包装尺寸(2包、6包等)。你知道吗
我想把字母“L”前的每个数字分开,忽略点。然后,ML或CL或L将被相同地处理,并且1.5L仍应被捕获为1.5L而不是15L
有人能帮我找到正确的正则表达式吗?你知道吗
下面是一个regex模式和一个如何完成任务的示例:
PS:感谢@Toto对管道的评论
输出:
更新:
如果需要处理
.5ML
的情况,请使用以下模式:r'((\d+(\.\d+)?|(\.\d+))[MCDNPF]?L(\s+\d+PK)?)'
例如:
它将返回:
相关问题 更多 >
编程相关推荐