Разделить строку на список подстрок в python
5 июня 2016 г. 12:05
Если нужно распарсить строку по какому-то символу, то в простом случае можно воспользоваться функцией split(separator=' '):
a = 'python,django,templates' b = a.split(',') # b = ['python', 'django', 'templates']
Но если у нас задача посложнее, например:
a = 'python, django, template tags' b = a.split(',') # b = ['python', ' django', ' template tags']
то появится проблема лишних пробелов.
Итак, рассмотрим следующую задачу: есть форма с одним полем categories, данные которого можно записывать как через запятую, так и каждую с новой строки. Нужно сформировать список введённых данных. Например, данные поля имеют вид:
python, django cms, template tags templates
Видим, что первая строчка состоит из трех элементов, затем лишние абзацы и, наконец, ещё одна категория. С помощью следующего кода можно распарсить данные:
data = 'python, django cms, template tags\n\n\ntemplates' categories = [] rows = data.splitlines() # разбиваем на строки for row in rows: if row: # избавляемся от пустых строк [categories.append(' '.join(item.split())) for item in row.split(',') if item]
Результат выполнения кода:
categories = ['python', 'django cms', 'template tags', 'templates']
Немного прокомментирую код:
- Для разбиения строк используем splitlines(), который - похож на split(), но использует в качестве разделителя символы перевода каретки (\n и \r).
- Условием if row отсекаем пустые строки.
- Последней строкой кода мы используем генератор списка (без присваивания к переменной - оно нам не надо), чтобы компактнее записать код:
- row.split(',') разбивает строку, используя запятую в качестве разделителя.
- ' '.join(item.split()) удаляет лишние пробелы между словами
Данный код не претендует на идеальность, но он достаточно читабельный - может, кому и пригодится!
Похожие статьи:
Представляю вашему вниманию книгу, написанную моим близким другом Максимом Макуриным: Секреты эффективного управления ассортиментом.
Книга предназначается для широкого круга читателей и, по мнению автора, будет полезна специалистам отдела закупок и логистики, категорийным и финансовым менеджерам, менеджерам по продажам, аналитикам, руководителям и директорам, в компетенции которых принятие решений по управлению ассортиментом.
Комментарии: 0