У меня есть длинный список строк, которые представляют собой разные продукты в моей базе данных, каждая с этикеткой продукта и размерами продукта (включая размер упаковки) продукта. Метка продукта является слегка изменяемой, и я хочу, чтобы регулярное выражение учитывало все это: я хочу, чтобы регулярное выражение разделяло строки на 3 подстроки: 1. Разобрать строку, если в метке есть «Pack», «pck» или «Count». 2. Разобрать размер - 12, 24 и др. c 3. Размер каждой пачки (12,5 унций, 10 унций). Например, у меня есть следующие строки:
str1 = "Greenies Original Regular Natural Dental Dog Treats, 12 oz. Pack (12 Treats)"
str2 = "Greenies Pill Pockets Capsule Size Dog Treats Chicken Flavor, 7.9 oz. Pack (30 Treats)"
str3 = "Blue Buffalo Family Favorites Natural Adult Wet Dog Food, Sunday Chicken 12.5-oz can (Pack of 12)"
str4 = "Blue Buffalo Dental Bones Natural Adult Dental Chew Regular Dog Treat, 12-oz bag (12 Count)"
str5 = "Purina ONE Natural Dry Dog Food, SmartBlend Chicken & Rice Formula - 8 lb. Bag"
str6 = "Rachael Ray Nutrish Natural Dry Dog Food, Real Chicken & Veggies Recipe, 14 lbs"
str7 = "(12 Pack) Purina ALPO Gravy Wet Dog Food, Gravy Cravers Roast Beef Flavor in Gravy, 13.2 oz. Cans"
str8 = "Ol' Roy Munchy Bones Dog Treats, Greek Yogurt Flavor, 20 ounce, 7 Count"
Я хотел бы получить:
str1_group = ['12 oz', 'Pack', '12 Treats']
str2_group = ['7.9 oz', 'Pack', '30 Treats']
str3_group = ['12.5-oz', 'can', '12 Count']
str4_group = ['12-oz', 'bag', '12 Count']
str5_group = ['8 lb', 'Bag', '']
str6_group = ['14 lbs', '', '']
str7_group = ['13.2 oz', 'Cans', '12 Pack']
str8_group = ['20 ounce', '', '7 Count']
Проблема в том, что многие продукты имеют разные описания: некоторые имеют Pack детали в начале строки, а некоторые в конце, некоторые имеют весовые данные в унциях, унции и некоторые в фунтах.
Что я пробовал:
re.search(r'(\d+(\.\d+)?\s[ol]?[zbs])', text)
Тем не менее, выше учитывает только «12 унций», «12,5 унций», «0,5 унций» (даже не «12,5 унций») типов струн. Мне становится немного сложно написать лучшее регулярное выражение для каждого сценария.
Может кто-нибудь помочь мне с лучшим регулярным выражением для решения этой проблемы? Заранее спасибо !!