Как удалить лишнее из строки?

Есть строки, например:

12 PARFUMEURS  LE BIEN AIME  100ml edp test
A.Banderas  BLUE SED. ELECTRIC women 100ml  test
A.Dunhill  BLACK men 100ml edt

Как извлечь только название, а обьем и следушее за ним - удалить?


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

Автор решения: Jack_oS
rows = [
    '12 PARFUMEURS  LE BIEN AIME  100ml edp test',
    'A.Banderas  BLUE SED. ELECTRIC women 100ml  test',
    'A.Dunhill  BLACK men 100ml edt',
]

Найдите индекс "100ml" и возьмите срез до него:

for row in rows:
   volume_index = row.index('100ml')
   print(row[:volume_index])

выведет:

12 PARFUMEURS  LE BIEN AIME  
A.Banderas  BLUE SED. ELECTRIC women 
A.Dunhill  BLACK men 

Или так:

new_rows = [row[:row.index('100ml')].strip() for row in rows]

чтоб сразу и в список, и без лишних пробелов:

>>> new_rows
['12 PARFUMEURS  LE BIEN AIME', 'A.Banderas  BLUE SED. ELECTRIC women', 'A.Dunhill  BLACK men']

UPD "в том и дело что women и men тоже убирать надо, но они не везде есть" решается с помощью .replace():

new_rows = [row[:row.index('100ml')].replace('women', '').replace('man', '').strip() for row in rows]

.replace() не вызовет ошибки, даже если не найдет шаблон для замены:

>>> new_rows
['12 PARFUMEURS  LE BIEN AIME', 'A.Banderas  BLUE SED. ELECTRIC', 'A.Dunhill  BLACK']
→ Ссылка