Разделение строк в Python: основные методы

Раздел: Основы Python -> Строки

Основной метод split()

Наиболее эффективный способ разделения строки в Python - использование встроенного метода split(). Без аргументов он разбивает строку по последовательностям пробельных символов (пробелы, табуляции, переводы строк) и возвращает список подстрок.

text = 'Раздели эту строку на слова'
words = text.split()
print(words)

Python strip (метод strip в python)

['Раздели', 'эту', 'строку', 'на', 'слова']

Python повторить строку (повторение строки в python)

Метод автоматически удаляет лишние пробелы в начале и конце, а также игнорирует многократные пробелы между словами.

Типичные ошибки:

  • Забывают, что split() без аргументов обрабатывает любые пробельные символы, а не только пробелы. Если нужен строгий разделитель (например, только запятая), необходимо передать его явно.
  • При работе с очень большими строками split() создаёт полный список в памяти. Для потоковой обработки лучше использовать splitlines() или генераторы.

Как разделить строку по конкретному разделителю?

Метод split() принимает необязательный аргумент sep - строку-разделитель. Разбиение происходит по каждому вхождению разделителя.

csv_line = 'яблоко,банан,апельсин'
fruits = csv_line.split(',')
print(fruits)

Tuple в str python (преобразование кортежа в строку в python)

['яблоко', 'банан', 'апельсин']

Python объект в строку (преобразование объекта в строку в python)

Проблема: пустые строки на краях или повторяющиеся разделители.

Если строка начинается или заканчивается разделителем, в списке появятся пустые строки.

line = ',один,два,'
parts = line.split(',')
print(parts)

Python convert string (преобразование строк в python)

['', 'один', 'два', '']

Python str to bytes (преобразование строки в байты в python)

Для удаления пустых элементов можно использовать фильтрацию: list(filter(None, parts)) или списковое включение.

Как ограничить количество разбиений (maxsplit)?

Второй аргумент maxsplit задаёт максимальное число разбиений. Оставшаяся часть строки возвращается как последний элемент.

s = 'раз-два-три-четыре'
result = s.split('-', 2)
print(result)

функция разделить python (разделение строки на список в python)

['раз', 'два', 'три-четыре']

вывести символ строки python (вывод символа строки в python)

Это полезно, когда нужно извлечь первые N полей, а остальное сохранить целиком.

Как разбить строку на части справа налево (rsplit)?

Метод rsplit() работает аналогично split(), но разбиение происходит с правого края. Особенно удобен для разбора путей или URL.

path = '/home/user/docs/file.txt'
last_part = path.rsplit('/', 1)[-1]
print(last_part)

вывести длину строки python (вывести длину строки в python)

file.txt

вывести элемент строки python (вывод конкретного символа строки по индексу в python)

Аналогично split() можно указать sep и maxsplit.

Как разделить строку по нескольким разделителям (re.split)?

Модуль re предоставляет функцию re.split(), которая принимает регулярное выражение. Это позволяет разбивать строку по разнородным границам.

import re
text = 'яблоко;банан,апельсин.груша'
result = re.split(r'[;,.]', text)
print(result)

задания на строки python (задания на строки в python)

['яблоко', 'банан', 'апельсин', 'груша']

замена символов python (замена символов в строке python)

Обязательно экранировать специальные символы регулярных выражений или использовать re.escape для буквальных строк.

Ошибка: пустые строки при совпадении на краях или последовательных разделителях.

Поведение такое же, как у split. Для удаления пустых строк можно добавить фильтрацию после разбиения.

Как разделить строку на части фиксированной длины?

Для разбиения на равные куски используется списковое включение с шагом:

s = 'abcdefgh'
chunks = [s[i:i+2] for i in range(0, len(s), 2)]
print(chunks)

Python первое слово в строке (извлечение первого слова из строки в python)

['ab', 'cd', 'ef', 'gh']

Python последнее слово в строке (извлечение последнего слова из строки в python)

Если длина строки не кратна размеру куска, последний элемент будет короче.

Как разбить строку на отдельные символы?

Преобразование строки в список символов: list(str)

word = 'Python'
chars = list(word)
print(chars)

индекс элемента строки python (получение индекса символа или подстроки в строке python)

['P', 'y', 't', 'h', 'o', 'n']

Python номера символов (номера (индексы) символов в строке python)

Как разделить строку по переводу строки (splitlines)?

Метод splitlines() разбивает строку по границам строк, поддерживая различные символы перевода.

multiline = 'строка1\nстрока2\r\nстрока3'
lines = multiline.splitlines()
print(lines)

Python новая строка (использование символа новой строки в python)

['строка1', 'строка2', 'строка3']

Python строки find (метод find для строк)

В отличие от split('\n'), splitlines() корректно обрабатывает комбинации \r\n.

Как разделить строку на две части по первому или последнему вхождению разделителя (partition / rpartition)?

Методы partition() и rpartition() возвращают кортеж из трёх элементов: (до разделителя, разделитель, после разделителя). Если разделитель не найден, возвращается (исходная строка, '', '').

email = 'user@example.com'
username, _, domain = email.partition('@')
print(username, domain)

Python string index (метод str.index в python)

user example.com

rpartition ищет последнее вхождение.

- метод replace python (метод replace в python)
- длина слова python (определение длины слова в python)
- символ пустой строки python (символ пустой строки в python)

Расширенные примеры разделения строк

Пример
# Пример 1: Разделение и преобразование типов с помощью map
import math

coords = '3.14;2.718;1.618'
x, y, z = map(float, coords.split(';'))
print(x, y, z, math.hypot(x, y))
3.14 2.718 1.618 4.160331924318423
Пример
# Пример 2: Разделение строки SQL-запроса на части с сохранением структуры
query = 'SELECT * FROM users WHERE age > 18 ORDER BY name'
# Разделим на ключевые слова, но сохраним условия
import re
parts = re.split(r'(\s+WHERE\s+|\s+ORDER\s+BY\s+|\s+FROM\s+)', query, flags=re.IGNORECASE)
print(parts)
['SELECT *', ' FROM ', 'users', ' WHERE ', 'age > 18', ' ORDER BY ', 'name']
Пример
# Пример 3: Разделение CSV с учётом кавычек (с помощью csv модуля)
import csv

line = '"Smith, John",30,"New York, NY"'
# Использование split здесь сломается из-за запятых внутри кавычек
reader = csv.reader([line])
for row in reader:
    print(row)
[['Smith, John', '30', 'New York, NY']]
Пример
# Пример 4: Разделение строки и удаление пустых элементов с помощью filter
line = ',a,b,,c,'
result = list(filter(None, line.split(',')))
print(result)
['a', 'b', 'c']
Пример
# Пример 5: Разделение на равные части с остатком (с помощью textwrap)
import textwrap

long_text = 'ABCDEFGHIJKLM'
width = 4
chunks = textwrap.wrap(long_text, width)  # возвращает список строк, не режет слова
print(chunks)
# Для точного разбиения без учёта слов:
chunks_exact = [long_text[i:i+width] for i in range(0, len(long_text), width)]
print(chunks_exact)
['ABCD', 'EFGH', 'IJKL', 'M']
['ABCD', 'EFGH', 'IJKL', 'M']

Разделение строки в Python - comments

En
Python split string (python)