Основы работы со строками (string) в Python: создание, методы и манипуляции с текстовыми данными

онлайн тренажер по питону
Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Самоучитель Python 3, собранный из материалов данного сайта.Предназначен в основном для тех, кто хочет изучить язык программирования Python с нуля.

Полная таблица методов строк в 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 являются неизменяемыми объектами, поэтому все методы возвращают новую строку, не изменяя исходную. Это важно помнить при работе с большими объемами текстовых данных для оптимизации производительности приложений.

категории

  • Введение в Python
  • Основы программирования на Python
  • Управляющие конструкции
  • Структуры данных
  • Функции и модули
  • Обработка исключений
  • Работа с файлами и потоками
  • файловая система
  • Объектно-ориентированное программирование (ООП)
  • Регулярные выражения
  • Дополнительные темы
  • Общая база питона