Строки в Python: шпаргалка
Карьерник — квиз-тренажёр в Telegram с 1500+ вопросами для собесов аналитика. SQL, Python, A/B, метрики. Бесплатно.
Основные методы
| Метод | Что делает |
|---|---|
len(s) |
длина строки |
s.lower() |
к нижнему регистру |
s.upper() |
к верхнему |
s.capitalize() |
первая буква заглавная |
s.title() |
Каждое Слово С Заглавной |
s.strip() |
убрать пробелы/символы с обеих сторон |
s.lstrip() / s.rstrip() |
только слева / справа |
s.replace(a, b) |
заменить подстроку |
s.split(sep) |
разбить в список |
s.join(list) |
собрать список в строку |
s.startswith(x) |
начинается с x |
s.endswith(x) |
заканчивается на x |
s.find(x) |
индекс x или -1 |
s.index(x) |
индекс x или ValueError |
s.count(x) |
сколько раз встречается |
x in s |
содержит подстроку |
1. Срезы (slicing)
s = "Привет, мир"
s[0] # 'П'
s[-1] # 'р'
s[0:6] # 'Привет'
s[:6] # 'Привет' (от начала)
s[8:] # 'мир' (до конца)
s[::-1] # 'рим ,тевирП' (реверс)
s[::2] # каждый второй символ2. Форматирование — f-string
name = "Alice"
age = 30
f"{name} is {age}" # 'Alice is 30'
f"{age:03d}" # '030' (3 цифры с ведущими нулями)
f"{price:.2f}" # '1234.56' (2 знака после запятой)
f"{revenue:,.0f}" # '1,234,567'
f"{ctr:.2%}" # '2.37%'
f"{now:%Y-%m-%d}" # формат датыПодробнее: f-string шпаргалка.
3. split и join
# split
"a,b,c,d".split(",") # ['a', 'b', 'c', 'd']
"one two three".split() # ['one', 'two', 'three'] (по whitespace)
"a,b,,c".split(",") # ['a', 'b', '', 'c'] (пустые сохраняются)
"a-b-c-d".split("-", 2) # ['a', 'b', 'c-d'] (максимум 2 раза)
# join
",".join(["a", "b", "c"]) # 'a,b,c'
"\n".join(lines) # разделитель — перевод строки
" | ".join(str(x) for x in [1, 2, 3]) # '1 | 2 | 3'4. Поиск и замена
s = "Привет, мир"
# поиск
s.find("мир") # 8 (индекс)
s.find("нет") # -1 (не найдено)
s.index("мир") # 8 (или ValueError)
"мир" in s # True
# замена
s.replace("мир", "Вселенная") # 'Привет, Вселенная'
s.replace("и", "X", 1) # 'ПрXвет, мир' (только 1 замена)5. Проверка типа строки
"123".isdigit() # True — только цифры
"abc".isalpha() # True — только буквы
"abc123".isalnum() # True — буквы и цифры
" ".isspace() # True — только пробельные
"Alice".istitle() # True — Каждое Слово С Заглавной
"ABC".isupper() # True
"abc".islower() # True6. Удаление / обрезка
" hello ".strip() # 'hello'
"\nhello\n".strip() # 'hello'
"###hello###".strip("#") # 'hello'
"hello world".rstrip("d") # 'hello worl'
# удалить префикс/суффикс (Python 3.9+)
"https://example.com".removeprefix("https://") # 'example.com'
"data.csv".removesuffix(".csv") # 'data'7. Заполнение
"5".zfill(3) # '005' (ведущие нули)
"hi".ljust(10, "-") # 'hi--------'
"hi".rjust(10, "-") # '--------hi'
"hi".center(10, "-")# '----hi----'8. Множественная замена
# через str.maketrans
table = str.maketrans({"a": "X", "b": "Y"})
"abcabc".translate(table) # 'XYcXYc'
# или циклом
for old, new in [("a", "X"), ("b", "Y")]:
s = s.replace(old, new)9. Работа с Unicode
"Привет".encode("utf-8") # b'\xd0\x9f\xd1\x80...' (bytes)
b"hello".decode("utf-8") # 'hello'
# экранирование
"line1\nline2" # перенос строки
r"C:\new\path" # raw string — обратные слеши не экранируются
"He said \"hi\"" # 'He said "hi"'10. Строки + pandas
import pandas as pd
df = pd.DataFrame({'name': [' Alice ', 'BOB', 'charlie']})
df['name_clean'] = df['name'].str.strip()
df['name_lower'] = df['name'].str.lower()
df['starts_with_a'] = df['name'].str.startswith('A')
df['length'] = df['name'].str.len()
# извлечь регекспом
df['digits'] = df['text'].str.extract(r'(\d+)')
# разбить
df[['first', 'last']] = df['full_name'].str.split(' ', n=1, expand=True)
# заменить
df['clean'] = df['text'].str.replace(r'\s+', ' ', regex=True)11. Соединение многострочных
# конкатенация через +
"Hello" + " " + "world" # 'Hello world'
# многократная
"ab" * 3 # 'ababab'
# f-string с многострочной
msg = f"""
Line 1
Line 2: {name}
Line 3
"""12. Форматирование чисел / дат
# проценты
f"{0.9876:.2%}" # '98.76%'
# валюта
f"{1234.5:,.2f} ₽" # '1,234.50 ₽'
# научная нотация
f"{1234567:.2e}" # '1.23e+06'
# даты
from datetime import datetime
f"{datetime.now():%d.%m.%Y %H:%M}" # '21.04.2026 10:30'Частые ошибки
Ошибка 1. Путать == и is
# равенство содержимого
"hello" == "hello" # True
# идентичность объектов (обычно не то, что нужно)
a = "hello"
b = "hello"
a is b # может быть True (string interning), но не полагайтесьИспользуйте == для сравнения строк.
Ошибка 2. Конкатенация в цикле
# медленно для больших циклов
result = ""
for x in items:
result += str(x) + ","
# быстро
result = ",".join(str(x) for x in items)Ошибка 3. Регистр в проверках
# "Alice" != "alice"
if name == "alice": # пропустит "Alice"
# правильно
if name.lower() == "alice":Ошибка 4. Строки иммутабельны
s = "hello"
s[0] = "H" # TypeError
# правильно — создать новую строку
s = "H" + s[1:] # 'Hello'Полезные one-liner-ы
# обратить порядок слов
" ".join(sentence.split()[::-1])
# убрать пунктуацию
import string
text.translate(str.maketrans("", "", string.punctuation))
# первая буква каждого слова заглавной
" ".join(w.capitalize() for w in text.split())
# уникальные символы в порядке появления
''.join(dict.fromkeys(text))
# самый частый символ
from collections import Counter
Counter(text).most_common(1)[0][0]Связанные темы
- F-string шпаргалка
- Regex Python — шпаргалка
- Python шпаргалка для аналитика
- List comprehension — шпаргалка
FAQ
Строки в Python изменяемые?
Нет. Каждая операция создаёт новую строку. Поэтому str.join быстрее, чем += в цикле.
f-string или .format()?
f-string (Python 3.6+). Короче, читаемее, быстрее.
Как быстро проверить, что строка — число?
s.isdigit() — только для неотрицательных целых. Для float — try: float(s); except ValueError.
Как склеить список чисел в строку?
",".join(str(x) for x in numbers) или ",".join(map(str, numbers)).
Тренируйте Python — откройте тренажёр с 1500+ вопросами для собесов.