Разделить строку на список подстрок в 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()) удаляет лишние пробелы между словами

Данный код не претендует на идеальность, но он достаточно читабельный - может, кому и пригодится!

Оцените статью

3.9 из 5 (всего 8 оценок)

captcha
Отмеченные звёздочкой поля ( * ) являются обязательными для заполнения.

Спасибо за ваш отзыв!

После нажатия кнопки "Отправить" ваше сообщение будет доставлено мне на почту.

Автор статьи

Артём Мальцев

Веб-разработчик, владеющий знаниями языка программирования Python, фреймворка Django, системы управления содержимым сайта Django CMS, платформы для создания интернет-магазина Django Shop и многих различных приложений, использующих эти технологии.

Права на использование материала, расположенного на этой странице https://vivazzi.pro/ru/it/split-python/:

Разрешается копировать материал с указанием её автора и ссылки на оригинал без использования параметра rel="nofollow" в теге <a>. Использование:

Автор статьи: Артём Мальцев
Ссылка на статью: <a href="https://vivazzi.pro/ru/it/split-python/">https://vivazzi.pro/ru/it/split-python/</a>

Больше: Правила использования сайта

Представляю вашему вниманию книгу, написанную моим близким другом Максимом Макуриным: Секреты эффективного управления ассортиментом.

Книга предназначается для широкого круга читателей и, по мнению автора, будет полезна специалистам отдела закупок и логистики, категорийным и финансовым менеджерам, менеджерам по продажам, аналитикам, руководителям и директорам, в компетенции которых принятие решений по управлению ассортиментом.

Комментарии: 0

Вы можете оставить комментарий как незарегистрированный пользователь.

Но зарегистрировавшись, вы сможете:

  • получать оповещения об ответах
  • просматривать свои комментарии
  • иметь возможность использовать все функции разработанных сервисов

Для комментирования от своего имени войдите или зарегистрируйтесь на сайте Vuspace

Отправить

На данный момент нет специального поиска, поэтому я предлагаю воспользоваться обычной поисковой системой, например, Google, добавив "vivazzi" после своего запроса.

Попробуйте

Выберите валюту для отображения денежных единиц