Методы строк: split, join, strip, replace

Методы строк: split, join, strip, replace

Строки в Python — богатые объекты с десятками методов. В этом уроке разберём четыре самых используемых: split (разбить строку), join (собрать строку из частей), strip (убрать пробельные символы), replace (заменить подстроку).

split: разбить строку на части

split(sep=None, maxsplit=-1) разбивает строку по разделителю и возвращает список строк:

sentence = "Python — мощный и читаемый язык"
words = sentence.split(" ")   # разделитель — пробел
print(words)
# ['Python', '—', 'мощный', 'и', 'читаемый', 'язык']

Без аргументов split() разбивает по любому пробельному символу (пробел, табуляция, \n) и автоматически убирает ведущие/хвостовые пробелы:

s = "  hello   world  "
print(s.split())   # ['hello', 'world']

Разбивка по другим разделителям:

csv_line = "Алиса,25,Москва"
parts = csv_line.split(",")
print(parts)   # ['Алиса', '25', 'Москва']

date = "2025-04-15"
year, month, day = date.split("-")   # распаковка
print(year, month, day)   # 2025 04 15

path = "/usr/local/bin/python3"
components = path.split("/")
print(components)   # ['', 'usr', 'local', 'bin', 'python3']

Параметр maxsplit ограничивает число разбиений:

s = "a:b:c:d:e"
print(s.split(":", 2))   # ['a', 'b', 'c:d:e'] — только 2 разбиения

rsplit: разбить с конца

rsplit(sep, maxsplit) — то же, что split, но с конца:

s = "a:b:c:d"
print(s.rsplit(":", 1))   # ['a:b:c', 'd'] — последний разделитель

splitlines: разбить по строкам

splitlines() разбивает по переводам строк (\n, \r\n):

text = "Строка 1\nСтрока 2\nСтрока 3"
lines = text.splitlines()
print(lines)   # ['Строка 1', 'Строка 2', 'Строка 3']

join: собрать строку из списка

sep.join(iterable) — обратная операция к split: объединяет элементы итерируемого через разделитель:

words = ["Hello", "World", "Python"]

print(" ".join(words))     # Hello World Python
print(", ".join(words))    # Hello, World, Python
print("-".join(words))     # Hello-World-Python
print("".join(words))      # HelloWorldPython

Важно: join применяется к разделителю (не к списку). Это немного нестандартный синтаксис, но логика такая: разделитель — это часть строки, которая будет «сшивать» элементы.

Практический пример — сборка пути:

parts = ["home", "alice", "documents", "file.txt"]
path = "/".join(parts)
print(path)   # home/alice/documents/file.txt

strip: убрать пробельные символы

strip() удаляет ведущие и хвостовые пробельные символы (' ', '\t', '\n', '\r'):

s = "   hello world   "
print(s.strip())     # 'hello world'
print(s.lstrip())    # 'hello world   ' — только слева
print(s.rstrip())    # '   hello world' — только справа

Можно передать строку символов для удаления:

s = "***hello***"
print(s.strip("*"))     # hello

s2 = "...abc..."
print(s2.strip("."))    # abc

strip удаляет все вхождения указанных символов с обоих концов, пока встречает их.

replace: заменить подстроку

replace(old, new, count=-1) заменяет все вхождения old на new:

s = "Hello, World! Hello, Python!"

print(s.replace("Hello", "Goodbye"))
# 'Goodbye, World! Goodbye, Python!'

print(s.replace("Hello", "Hi", 1))   # заменить только первое вхождение
# 'Hi, World! Hello, Python!'

replace не изменяет исходную строку — возвращает новую:

original = "cats are good"
modified = original.replace("cats", "dogs")
print(original)    # cats are good — не изменилась
print(modified)    # dogs are good

Полезные приёмы:

# Удалить все пробелы:
s = "h e l l o"
print(s.replace(" ", ""))   # hello

# Заменить несколько символов цепочкой:
text = "one, two; three. four"
text = text.replace(",", "").replace(";", "").replace(".", "")
print(text)   # one two three four

Практический пример: обработка CSV

csv_data = """имя,возраст,город
Алиса,25,Москва
Борис,30,СПб
Вера,28,Казань"""

lines = csv_data.strip().splitlines()
headers = lines[0].split(",")

for line in lines[1:]:
    values = line.split(",")
    person = dict(zip(headers, values))
    print(person)
# {'имя': 'Алиса', 'возраст': '25', 'город': 'Москва'}
# {'имя': 'Борис', 'возраст': '30', 'город': 'СПб'}
# {'имя': 'Вера', 'возраст': '28', 'город': 'Казань'}

Проверь себя

Что вернёт следующее выражение?

result = " ".join("hello".split("l"))
print(result)

"hello".split("l")['he', '', 'o']. " ".join(...)'he o' (два пробела, потому что средний элемент — пустая строка).

Итог

  • split(sep) — разбить строку по разделителю → список. Без аргументов — по пробелу с авто-trim.
  • join(iterable) — собрать строку из элементов через разделитель: "sep".join(list).
  • strip() — убрать ведущие и хвостовые пробелы; lstrip() / rstrip() — только с одной стороны.
  • replace(old, new) — заменить подстроку; не изменяет исходную строку.
  • Все методы возвращают новую строку — строки в Python неизменяемы.

В следующем уроке подробно разберём форматирование строк: f-строки, format() и старый стиль %.

Попробуйте интерактивную версию

Практические задачи, квизы и AI-наставник — бесплатный старт без карты

Перейти к практике