Как разбить строку по шаблону регулярного выражения?

Из строки:

'товар1 5шт объект 3ед изделие 7 единиц' 

надо получить список:

['товар1','объект','изделие']

Такой пример строки:

'опрыскиватель gig 600-2 шт.,косилка роторная пу-270 - 2 ед., опрыскиватель 2000 л.- 1 штука'

При этом, разбиение должно происходить по шаблону регулярного выражения, а не по запятой.


Ответы (2 шт):

Автор решения: mrEvgenX

Должно подойти в качестве начальной идеи. Последний элемент, в данном случае будет всегда пустой, его можно откинуть. Данном случае - это когда идет название товара а потом через пробел - его количество.

>>> import re
>>> re.split(r' \d+(?:шт|ед| единиц)', 'товар1 5шт объект 3ед изделие 7 единиц')[:-1]
['товар1', ' объект', ' изделие']
→ Ссылка
Автор решения: MaxU

попробуйте так:

In [18]: s = 'опрыскиватель gig 600-2 шт.,косилка роторная пу-270 - 2 ед., опрыскиватель 2000 л.- 1 штука'

In [19]: pat = r"\d+\s*(?:единиц|ед|штук\w*|шт\w*)[\s\.,]*"

In [20]: re.split(pat, s)
Out[20]:
['опрыскиватель gig 600-',
 'косилка роторная пу-270 - ',
 'опрыскиватель 2000 л.- ',
 '']
→ Ссылка