Как удалить лишнее из строки?
Есть строки, например:
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']