← Назад к вопросам

Как разделить строку на слова в 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()
Как разделить строку на слова в Python? | PrepBro