Полная таблица методов строк в Python
| Метод |
Описание |
Пример |
upper() |
Преобразование в верхний регистр |
"hello".upper() → "HELLO" |
lower() |
Преобразование в нижний регистр |
"HELLO".lower() → "hello" |
capitalize() |
Первая буква заглавная, остальные строчные |
"hello world".capitalize() → "Hello world" |
title() |
Каждое слово с заглавной буквы |
"hello world".title() → "Hello World" |
swapcase() |
Инверсия регистра |
"Hello".swapcase() → "hELLO" |
casefold() |
Агрессивное приведение к нижнему регистру |
"ß".casefold() → "ss" |
Методы очистки и выравнивания
| Метод |
Описание |
Пример |
strip() |
Удаление пробелов с краев |
" hello ".strip() → "hello" |
lstrip() |
Удаление пробелов слева |
" hello ".lstrip() → "hello " |
rstrip() |
Удаление пробелов справа |
" hello ".rstrip() → " hello" |
strip(chars) |
Удаление указанных символов |
"...hello...".strip(".") → "hello" |
center(width) |
Центрирование строки |
"hi".center(10) → " hi " |
ljust(width) |
Выравнивание по левому краю |
"hi".ljust(10) → "hi " |
rjust(width) |
Выравнивание по правому краю |
"hi".rjust(10) → " hi" |
zfill(width) |
Заполнение нулями слева |
"42".zfill(5) → "00042" |
Методы замены и модификации
| Метод |
Описание |
Пример |
replace(old, new) |
Замена подстроки |
"hello".replace("l", "x") → "hexxo" |
replace(old, new, count) |
Замена с ограничением количества |
"hello".replace("l", "x", 1) → "hexlo" |
translate(table) |
Замена по таблице символов |
"hello".translate(str.maketrans("l", "x")) → "hexxo" |
expandtabs(tabsize) |
Замена табуляции пробелами |
"a\tb".expandtabs(4) → "a b" |
Методы разделения и объединения
| Метод |
Описание |
Пример |
split() |
Разделение по пробелам |
"a b c".split() → ["a", "b", "c"] |
split(sep) |
Разделение по разделителю |
"a,b,c".split(",") → ["a", "b", "c"] |
split(sep, maxsplit) |
Разделение с лимитом |
"a,b,c".split(",", 1) → ["a", "b,c"] |
rsplit() |
Разделение справа |
"a.b.c".rsplit(".", 1) → ["a.b", "c"] |
splitlines() |
Разделение по строкам |
"a\nb\nc".splitlines() → ["a", "b", "c"] |
partition(sep) |
Разделение на 3 части |
"hello-world".partition("-") → ("hello", "-", "world") |
rpartition(sep) |
Разделение справа на 3 части |
"a.b.c".rpartition(".") → ("a.b", ".", "c") |
join(iterable) |
Объединение списка |
",".join(["a", "b", "c"]) → "a,b,c" |
Методы поиска
| Метод |
Описание |
Пример |
find(sub) |
Поиск подстроки (индекс) |
"hello".find("ll") → 2 |
find(sub, start) |
Поиск с начальной позиции |
"hello".find("l", 3) → 3 |
find(sub, start, end) |
Поиск в диапазоне |
"hello".find("l", 0, 2) → -1 |
rfind(sub) |
Поиск справа |
"hello".rfind("l") → 3 |
index(sub) |
Поиск с исключением |
"hello".index("ll") → 2 |
rindex(sub) |
Поиск справа с исключением |
"hello".rindex("l") → 3 |
count(sub) |
Подсчет вхождений |
"hello".count("l") → 2 |
count(sub, start, end) |
Подсчет в диапазоне |
"hello".count("l", 0, 3) → 1 |
Методы проверки начала и конца
| Метод |
Описание |
Пример |
startswith(prefix) |
Проверка начала |
"hello".startswith("he") → True |
startswith(tuple) |
Проверка нескольких префиксов |
"hello".startswith(("he", "hi")) → True |
endswith(suffix) |
Проверка конца |
"hello".endswith("lo") → True |
endswith(tuple) |
Проверка нескольких суффиксов |
"hello".endswith(("lo", "la")) → True |
Методы проверки типа символов
| Метод |
Описание |
Пример |
isdigit() |
Проверка на цифры |
"123".isdigit() → True |
isalpha() |
Проверка на буквы |
"abc".isalpha() → True |
isalnum() |
Проверка на буквы и цифры |
"abc123".isalnum() → True |
isspace() |
Проверка на пробельные символы |
" ".isspace() → True |
islower() |
Проверка на нижний регистр |
"hello".islower() → True |
isupper() |
Проверка на верхний регистр |
"HELLO".isupper() → True |
istitle() |
Проверка на заголовочный регистр |
"Hello World".istitle() → True |
isascii() |
Проверка на ASCII символы |
"hello".isascii() → True |
isdecimal() |
Проверка на десятичные числа |
"123".isdecimal() → True |
isnumeric() |
Проверка на числовые символы |
"123".isnumeric() → True |
isidentifier() |
Проверка на валидный идентификатор |
"var_name".isidentifier() → True |
isprintable() |
Проверка на печатные символы |
"hello".isprintable() → True |
Методы кодирования
| Метод |
Описание |
Пример |
encode() |
Кодирование в байты |
"hello".encode() → b'hello' |
encode(encoding) |
Кодирование в указанной кодировке |
"привет".encode("utf-8") → b'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82' |
Методы форматирования
| Метод |
Описание |
Пример |
format(*args, **kwargs) |
Форматирование строки |
"Hello {}".format("world") → "Hello world" |
format_map(mapping) |
Форматирование через словарь |
"Hello {name}".format_map({"name": "world"}) → "Hello world" |
Все эти методы возвращают новую строку, не изменяя исходную, поскольку строки в Python неизменяемы (immutable).
Создание строк в Python
Строки в Python представляют собой упорядоченные последовательности символов и являются одним из основных типов данных. Они могут быть созданы несколькими способами:
# Одинарные кавычки
my_string = 'Привет, мир!'
# Двойные кавычки
my_string = "Привет, мир!"
# Тройные кавычки для многострочных строк
my_string = '''Это многострочная
строка в Python'''
# Тройные двойные кавычки
my_string = """Ещё один способ
создания многострочной строки"""
Индексация и доступ к символам
В Python каждый символ строки имеет свой индекс, начиная с 0. Поддерживается как положительная, так и отрицательная индексация:
my_string = "Python"
print(my_string[0]) # P (первый символ)
print(my_string[-1]) # n (последний символ)
print(my_string[2]) # t (третий символ)
print(my_string[-2]) # o (предпоследний символ)
Срезы строк (slicing)
Срезы позволяют извлекать подстроки из строки. Синтаксис: string[start:stop:step]
my_string = "Hello, World!"
# Основные срезы
print(my_string[7:]) # World! (с 7-го символа до конца)
print(my_string[:5]) # Hello (с начала до 5-го символа)
print(my_string[2:8]) # llo, W (с 2-го до 8-го символа)
# Срезы с шагом
print(my_string[::2]) # Hlo ol! (каждый второй символ)
print(my_string[2::3]) # l r! (с 2-го символа с шагом 3)
# Обратный порядок
print(my_string[::-1]) # !dlroW ,olleH (вся строка в обратном порядке)
# Отрицательные индексы в срезах
print(my_string[-6:-1]) # World (с -6-го до -1-го символа)
print(my_string[-6:]) # World! (с -6-го символа до конца)
print(my_string[-1:-7:-1]) # !dlroW (обратный срез)
Основные операции со строками
Определение длины строки
my_string = "Hello, World!"
print(len(my_string)) # 13
Конкатенация (объединение) строк
string1 = "Hello"
string2 = "World"
result = string1 + ", " + string2 + "!"
print(result) # Hello, World!
# Повторение строки
repeated = "Python " * 3
print(repeated) # Python Python Python
Проверка содержания подстроки
text = "Python - мощный язык программирования"
print("Python" in text) # True
print("Java" not in text) # True
print("мощный" in text) # True
Форматирование строк
Метод format()
name = "Анна"
age = 25
city = "Москва"
# Позиционные аргументы
formatted = "Меня зовут {}, мне {} лет, я живу в {}".format(name, age, city)
print(formatted)
# Именованные аргументы
formatted = "Меня зовут {name}, мне {age} лет".format(name=name, age=age)
print(formatted)
# Индексы
formatted = "Меня зовут {0}, мне {1} лет, я живу в {2}".format(name, age, city)
print(formatted)
F-строки (форматированные строковые литералы)
name = "Анна"
age = 25
print(f"Меня зовут {name}, мне {age} лет")
# Выражения в f-строках
print(f"Через 5 лет мне будет {age + 5} лет")
# Форматирование чисел
price = 1234.5678
print(f"Цена: {price:.2f} рублей") # Цена: 1234.57 рублей
Старый стиль форматирования (%)
name = "Анна"
age = 25
print("Меня зовут %s, мне %d лет" % (name, age))
Основные методы строк
Методы изменения регистра
text = "Python Programming"
print(text.upper()) # PYTHON PROGRAMMING
print(text.lower()) # python programming
print(text.capitalize()) # Python programming
print(text.title()) # Python Programming
print(text.swapcase()) # pYTHON pROGRAMMING
print(text.casefold()) # python programming (более агрессивное приведение к нижнему регистру)
Методы проверки типа символов
# Проверка на цифры
print("123".isdigit()) # True
print("12.3".isdigit()) # False
# Проверка на буквы
print("abc".isalpha()) # True
print("abc123".isalpha()) # False
# Проверка на буквы и цифры
print("abc123".isalnum()) # True
print("abc 123".isalnum()) # False
# Проверка регистра
print("hello".islower()) # True
print("HELLO".isupper()) # True
print("Hello World".istitle()) # True
# Проверка на пробельные символы
print(" ".isspace()) # True
print("\t\n".isspace()) # True
Методы поиска и замены
text = "Python - лучший язык программирования для изучения Python"
# Поиск подстроки
print(text.find("Python")) # 0 (первое вхождение)
print(text.rfind("Python")) # 58 (последнее вхождение)
print(text.find("Java")) # -1 (не найдено)
# Более безопасный поиск (вызывает исключение если не найдено)
try:
print(text.index("Python")) # 0
print(text.rindex("Python")) # 58
except ValueError:
print("Подстрока не найдена")
# Подсчет вхождений
print(text.count("Python")) # 2
# Замена подстроки
new_text = text.replace("Python", "Java")
print(new_text)
# Ограниченная замена
new_text = text.replace("Python", "Java", 1) # Заменить только первое вхождение
print(new_text)
Методы разбиения и объединения
text = "яблоко,банан,апельсин,груша"
# Разбиение строки
fruits = text.split(",")
print(fruits) # ['яблоко', 'банан', 'апельсин', 'груша']
# Разбиение с ограничением
fruits = text.split(",", 2)
print(fruits) # ['яблоко', 'банан', 'апельсин,груша']
# Разбиение по строкам
multiline = "Первая строка\nВторая строка\nТретья строка"
lines = multiline.splitlines()
print(lines) # ['Первая строка', 'Вторая строка', 'Третья строка']
# Объединение списка в строку
words = ["Python", "это", "отличный", "язык"]
sentence = " ".join(words)
print(sentence) # Python это отличный язык
# Разбиение на части
text = "имя:возраст:город"
parts = text.partition(":")
print(parts) # ('имя', ':', 'возраст:город')
# Разбиение с конца
parts = text.rpartition(":")
print(parts) # ('имя:возраст', ':', 'город')
Методы очистки строк
text = " Python Programming "
# Удаление пробелов
print(text.strip()) # "Python Programming"
print(text.lstrip()) # "Python Programming "
print(text.rstrip()) # " Python Programming"
# Удаление определенных символов
text = "...Python..."
print(text.strip(".")) # "Python"
# Удаление множества символов
text = "!@#Python#@!"
print(text.strip("!@#")) # "Python"
Методы выравнивания
text = "Python"
# Выравнивание по центру
print(text.center(20)) # " Python "
print(text.center(20, "*")) # "*******Python*******"
# Выравнивание по левому краю
print(text.ljust(20)) # "Python "
print(text.ljust(20, "-")) # "Python--------------"
# Выравнивание по правому краю
print(text.rjust(20)) # " Python"
print(text.rjust(20, "-")) # "--------------Python"
# Заполнение нулями
number = "42"
print(number.zfill(5)) # "00042"
Методы проверки начала и конца строки
filename = "document.pdf"
print(filename.startswith("doc")) # True
print(filename.endswith(".pdf")) # True
print(filename.endswith((".pdf", ".doc", ".txt"))) # True (можно передать кортеж)
# Проверка с указанием диапазона
text = "Python Programming"
print(text.startswith("Pro", 7)) # True (начиная с 7-го символа)
print(text.endswith("gram", 0, 14)) # True (до 14-го символа)
Работа с Unicode и кодировками
# Получение кода символа
print(ord('A')) # 65
print(ord('Я')) # 1071
# Получение символа по коду
print(chr(65)) # A
print(chr(1071)) # Я
# Работа с Unicode
text = "Привет, мир! ?"
print(len(text)) # 13 (включая эмодзи)
# Кодирование и декодирование
text = "Привет"
encoded = text.encode('utf-8')
print(encoded) # b'\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'
decoded = encoded.decode('utf-8')
print(decoded) # Привет
Экранирование символов
# Специальные символы
print("Строка с \"кавычками\"")
print('Строка с \'кавычками\'')
print("Строка с \\ обратным слешем")
print("Строка с \n новой строкой")
print("Строка с \t табуляцией")
# Raw строки (без экранирования)
print(r"C:\Users\name\Documents") # C:\Users\name\Documents
print(r"Строка с \n без новой строки") # Строка с \n без новой строки
Сравнение строк
# Лексикографическое сравнение
print("apple" < "banana") # True
print("Apple" < "apple") # True (заглавные буквы имеют меньший код)
# Сравнение без учета регистра
str1 = "Python"
str2 = "python"
print(str1.lower() == str2.lower()) # True
# Численное сравнение
print("10" > "2") # False (строковое сравнение)
print(int("10") > int("2")) # True (численное сравнение)
Полезные практические примеры
Валидация данных
def validate_email(email):
"""Простая валидация email"""
return "@" in email and "." in email.split("@")[-1]
def validate_phone(phone):
"""Проверка номера телефона (только цифры)"""
clean_phone = phone.replace("-", "").replace(" ", "").replace("(", "").replace(")", "")
return clean_phone.isdigit() and len(clean_phone) >= 10
# Примеры использования
print(validate_email("user@example.com")) # True
print(validate_phone("+7 (123) 456-78-90")) # False (содержит +)
Обработка текста
def clean_text(text):
"""Очистка и нормализация текста"""
# Удаление лишних пробелов
text = " ".join(text.split())
# Приведение к нижнему регистру
text = text.lower()
# Удаление знаков пунктуации (простой пример)
import string
text = text.translate(str.maketrans("", "", string.punctuation))
return text
text = " Привет, МИР!!! Как дела? "
print(clean_text(text)) # привет мир как дела
Генерация текста
def generate_report(name, sales_data):
"""Генерация отчета о продажах"""
total_sales = sum(sales_data.values())
best_month = max(sales_data, key=sales_data.get)
report = f"""
Отчет о продажах для {name}
{'=' * 30}
Общая сумма продаж: {total_sales:,.2f} руб.
Лучший месяц: {best_month} ({sales_data[best_month]:,.2f} руб.)
Детализация по месяцам:
"""
for month, amount in sales_data.items():
report += f" {month}: {amount:,.2f} руб.\n"
return report
sales = {"Январь": 125000, "Февраль": 140000, "Март": 98000}
print(generate_report("ООО Рога и Копыта", sales))
Таблица основных методов строк
| Метод |
Описание |
Пример |
upper() |
Преобразование в верхний регистр |
"hello".upper() → "HELLO" |
lower() |
Преобразование в нижний регистр |
"HELLO".lower() → "hello" |
capitalize() |
Первая буква заглавная |
"hello".capitalize() → "Hello" |
title() |
Каждое слово с заглавной буквы |
"hello world".title() → "Hello World" |
strip() |
Удаление пробелов с краев |
" hello ".strip() → "hello" |
replace(old, new) |
Замена подстроки |
"hello".replace("l", "x") → "hexxo" |
split(sep) |
Разделение строки |
"a,b,c".split(",") → ["a", "b", "c"] |
join(iterable) |
Объединение списка |
",".join(["a", "b"]) → "a,b" |
find(sub) |
Поиск подстроки |
"hello".find("ll") → 2 |
count(sub) |
Подсчет вхождений |
"hello".count("l") → 2 |
startswith(prefix) |
Проверка начала |
"hello".startswith("he") → True |
endswith(suffix) |
Проверка конца |
"hello".endswith("lo") → True |
isdigit() |
Проверка на цифры |
"123".isdigit() → True |
isalpha() |
Проверка на буквы |
"abc".isalpha() → True |
isalnum() |
Проверка на буквы и цифры |
"abc123".isalnum() → True |
Строки в Python являются неизменяемыми объектами, поэтому все методы возвращают новую строку, не изменяя исходную. Это важно помнить при работе с большими объемами текстовых данных для оптимизации производительности приложений.