Строки в 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()      # True

6. Удаление / обрезка

"  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]

Связанные темы

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+ вопросами для собесов.