Разбиение строки на список символов в Python
Часто в программировании возникает необходимость разбить строку на отдельные символы. Например, имеется строка «Привет, мир!». Целью может быть получение списка, содержащего все символы данной строки, то есть [‘П’, ‘р’, ‘и’, ‘в’, ‘е’, ‘т’, ‘,’, ‘ ‘, ‘м’, ‘и’, ‘р’, ‘!’].
Однако, при попытке использовать метод str.split() для достижения этой цели, результатом будет не список символов, а список слов. Этот метод разделяет строку на слова, используя пробелы в качестве разделителя.
text = "Привет, мир!" print(text.split()) # Результат: ['Привет,', 'мир!']
Это не то, что нужно в данном случае.
В Python есть несколько способов разбить строку на символы. Первый и самый простой способ — использовать функцию list() . Если передать строку в функцию list() , она вернет список, где каждый элемент — это отдельный символ строки.
text = "Привет, мир!" print(list(text)) # Результат: ['П', 'р', 'и', 'в', 'е', 'т', ',', ' ', 'м', 'и', 'р', '!']
Альтернативный способ — использовать list comprehension, или генератор списков. Это позволяет более тонко контролировать процесс разбиения строки на символы.
text = "Привет, мир!" print([char for char in text]) # Результат: ['П', 'р', 'и', 'в', 'е', 'т', ',', ' ', 'м', 'и', 'р', '!']
Оба этих способа прекрасно справляются с задачей разбиения строки на список символов, и выбор между ними зависит от конкретной ситуации и личных предпочтений.
Как разбить строку на слова?
С клавиатуры вводиться строка. Нужно разбить ее на слова, чтобы потом с каждым словом можно было отдельно работать. Помогите пожалуйста.
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Словарь: разбить строку на слова и сохранить слова и места, где они встречаются
Доброго времени суток,форумчане. Формулирую задачу. Разбить строку на слова и сохранить слова и.

Разбить строку только на слова
Помогите, как разбить строку только на слова, то есть в итоге должен получиться список состоящий.
Как разбить строку на слова и записать в массив только 4-х буквенные слова
Как разбить строку на слова и записать в массив только 4-х буквенные слова? Максимальная длина.
Разбить строку на слова учитывая знаки препинания как слова
разбить строку на слова учитывая символи" ?, ! ; ." как слова Не знаю как это сделать
792 / 398 / 260
Регистрация: 09.12.2011
Сообщений: 786
Записей в блоге: 29

Сообщение было отмечено exarion как решение
Решение
s=input() t=s.split()
Разделить строку на список подстрок в python
Если нужно распарсить строку по какому-то символу, то в простом случае можно воспользоваться функцией 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()) удаляет лишние пробелы между словами
Данный код не претендует на идеальность, но он достаточно читабельный — может, кому и пригодится!
Как распарсить строку (python)?
Нужно распарсить команду с параметрами в телеграм-боте. Т.е. нужно распарсить обычную строку. Вид следующий:
/event add birthdays «День рождения» «2022.09.30»
Нужно получить [«event», «add», «birthdays», «День рождения», «2022.09.30»].
Просто .split() не подходит, так как то, что в кавычках, может иметь свои пробелы («День рождения»). То, что в кавычках, разделять не надо.
Как это можно сделать? Сначала искать кавычки, убирать их вместе с тем, что внутри, и потом уже делить остатки без кавычек с помощью .split()?- Вопрос задан более года назад
- 158 просмотров
Комментировать
Решения вопроса 2
Если формат строки всегда такой, я бы сделал через регулярное выражение:import re s = '/event add birthdays "День рождения" "2022.09.30"' regexp = r'/(\w+)\s(\w+)\s(\w+)\s\"([\w\s]+)\"\s\"([\d\.]+)' result = re.match(regexp, s) print(result.groups())Ответ написан более года назад
Комментировать
Нравится Комментировать
FullStackOverflow
Без регулярного выражения.text = '/event add birthdays "День рождения" "2022.09.30"' result = text[:text.find(' "')].split(' ') + [i.replace('"','') for i in text[text.find('"'):].split('" "')] print(result)Ответ написан более года назад
mayton2019 @mayton2019Как бы вы поступили если будет изменение?
Например добавить еще одно поле с комметарием к дню рождения тоже в кавычках. Например
s = '/event add birthdays "День рождения" "2022.09.30" "Сидорова не приглашать!"'
Например добавить еще одно поле с комметарием к дню рождения тоже в кавычках. Например
Использовал бы тот же самый код.
text = '/event add birthdays "День рождения" "2022.09.30" "Сидорова не приглашать!"' result = text[:text.find(' "')].split(' ') + [i.replace('"','') for i in text[text.find('"'):].split('" "')] print(result) #['/event', 'add', 'birthdays', 'День рождения', '2022.09.30', 'Сидорова не приглашать!']
