Убрать пробел с помощью RE
Необходимо достать из списка товаров наименование категории (Часы наручные и т.д.) У меня остается пробел в конце наименования категории ('Часы наручные '). Подскажите, пожалуйста, как его можно убрать.
import re
list = ['Часы наручные CASIO MT-56-L-1','Микроволновая печь SAMSUNG MCW-11FL',
'Сканер Hewlett-Packard EU-114','Принтер-копир Canon LPB2900B','Ноутбук ASUS Vivobook(K513-EA)','Фотооаппарат Canon YT-114']
category_list = [re.findall(r'[А-Яа-я-][^A-Za-z0-9]+', item)[0] for item in list]
print (category_list)
['Часы наручные ', 'Микроволновая печь ', 'Сканер ', 'Принтер-копир ', 'Ноутбук ', 'Фотооаппарат ']
Ответы (2 шт):
Автор решения: CrazyElf
→ Ссылка
Проще всего обрезать пробел(ы) через strip:
category_list = [re.findall(r'[А-Яа-я-][^A-Za-z0-9]+', item)[0].strip() for item in lst]
^^^^^^^^
# ['Часы наручные', 'Микроволновая печь', 'Сканер', 'Принтер-копир', 'Ноутбук', 'Фотооаппарат']
Автор решения: Namerek
→ Ссылка
С использованием регулярки
import re
li = ['Часы наручные CASIO MT-56-L-1', 'Микроволновая печь SAMSUNG MCW-11FL', 'Сканер Hewlett-Packard EU-114', 'Принтер-копир Canon LPB2900B', 'Ноутбук ASUS Vivobook(K513-EA)', 'Фотоаппарат Canon YT-114']
pat = re.compile(r'^[А-Яа-я\s-]+(?=\s+)')
category_list = [i for k in map(pat.findall, li) for i in k]
print(category_list)
Со стрипом есть в другом ответе
Кроме того:
Это очень ненадежный способ. Он будет приемлем только в том случае, если вы уверены в 2-х моментах:
- Категория не содержит других символов кроме перечисленных в паттерне категории.
- Название товара не содержит символы используемые в паттерне категории