← Назад к вопросам
Как разделить строку на слова в Python?
1.6 Junior🔥 121 комментариев
#Python и программирование
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Разделение строки на слова в Python
Это фундаментальный навык для работы с текстовыми данными. В Python существует несколько способов, каждый с собственными особенностями и случаями применения.
Способ 1: Метод split() — базовый и универсальный
# Базовое использование (по пробелам)
text = "Hello world Python programming"
words = text.split()
print(words) # ['Hello', 'world', 'Python', 'programming']
# Разделение по конкретному разделителю
csv_line = "John,25,Engineer,Moscow"
fields = csv_line.split(',')
print(fields) # ['John', '25', 'Engineer', 'Moscow']
# Разделение с ограничением на число частей
text = "a:b:c:d:e"
parts = text.split(':', 2) # максимум 3 части
print(parts) # ['a', 'b', 'c:d:e']
Способ 2: Регулярные выражения — для сложных паттернов
import re
text = "Hello, world; Python! Data"
# Разделение по одному или более пробелам/пунктуации
words = re.split(r'[,;\s!]+', text)
print(words) # ['Hello', 'world', 'Python', 'Data', '']
# Удаляем пустые значения
words = [w for w in words if w]
print(words) # ['Hello', 'world', 'Python', 'Data']
# Разделение с сохранением разделителя
words = re.split(r'(\W+)', text) # сохранит пунктуацию
print(words) # ['Hello', ', ', 'world', '; ', ...]
Способ 3: Метод split() с максимальной гибкостью
text = " multiple spaces between words "
# split() без аргументов автоматически обрабатывает пробелы
words = text.split() # удаляет пустые строки
print(words) # ['multiple', 'spaces', 'between', 'words']
# split(' ') сохраняет пустые значения
words = text.split(' ')
print(words) # ['', '', 'multiple', '', '', 'spaces', ...]
Способ 4: Использование str.splitlines() для многострочного текста
multiline_text = """First line
Second line
Third line"""
lines = multiline_text.splitlines()
print(lines) # ['First line', 'Second line', 'Third line']
# Каждую строку разбиваем на слова
words_per_line = [line.split() for line in lines]
print(words_per_line) # [['First', 'line'], ['Second', 'line'], ['Third', 'line']]
Практические примеры для Data Analyst
# Обработка логов
log_line = "2026-03-26 14:30:45 INFO User logged in from 192.168.1.1"
parts = log_line.split(maxsplit=4) # первые 4 части
print(parts) # ['2026-03-26', '14:30:45', 'INFO', 'User logged in from 192.168.1.1']
# Очистка и нормализация текста
dirty_text = " python | sql | pandas "
tools = [tool.strip() for tool in dirty_text.split('|')]
print(tools) # ['python', 'sql', 'pandas']
# Работа с иерархическими данными
path = "sales/europe/germany/berlin/q1"
parts = path.split('/')
print(parts) # ['sales', 'europe', 'germany', 'berlin', 'q1']
Сравнение производительности
import timeit
text = "hello world python programming " * 1000
# split() обычно быстрее всего
time_split = timeit.timeit(lambda: text.split(), number=10000)
print(f"split(): {time_split:.4f} сек")
# Regex медленнее, но мощнее
time_regex = timeit.timeit(lambda: re.split(r'\s+', text), number=10000)
print(f"regex: {time_regex:.4f} сек")
Рекомендации
- Для простых случаев используйте
split()без аргументов - Для разных разделителей используйте
split(delimiter) - Для сложных паттернов используйте
re.split(pattern) - Для очистки комбинируйте с
strip()и list comprehension - В SQL используйте
string_split()илиregexp_split_to_array()