Методы строк: 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() и старый стиль %.