Строковые данные в Python

В этой статье мы познакомимся со строками в Python – одним из самых важных и часто используемых типов данных.

Что такое строки в Python? 📝

Строки (тип str) — это последовательности символов, которые помогают нам хранить и обрабатывать текстовую информацию.

Они нужны буквально везде: для вывода сообщений пользователю, хранения имен, адресов, работы с файлами и многого другого!

Как создавать строки в Python ✨

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

Python 3.13
# Строки в одинарных кавычках
>>> single_quotes = 'Привет, мир!'
>>> print(single_quotes)
Привет, мир!
# Строки в двойных кавычках >>> double_quotes = "Python - это здорово!" >>> print(double_quotes)
Python - это здорово!
# Многострочные строки в тройных кавычках >>> multi_line = """Это многострочная строка. >>> Она может занимать несколько строк >>> и сохраняет все переносы строк.""" >>> print(multi_line) Это многострочная строка. Она может занимать несколько строк
и сохраняет все переносы строк.

Выбор типа кавычек зависит от ситуации:

  • Одинарные (') и двойные (") кавычки работают одинаково
  • Если в строке уже есть одинарные кавычки, удобнее обернуть её в двойные, и наоборот
  • Тройные кавычки (``` """```` или ''') отлично подходят для создания многострочного текста

Экранирование символов

Иногда нам нужно включить в строку особые символы, например, кавычки или перенос строки. Для этого используются последовательности с обратной косой чертой (\):

Python 3.13
# Использование кавычек внутри строк с экранированием
>>> quote_inside = "Он сказал: \"Привет!\""
>>> print(quote_inside)
Он сказал: "Привет!"
>>> path = "C:\\Program Files\\Python" >>> print(path)
C:\Program Files\Python
# Часто используемые последовательности экранирования >>> newline = "Первая строка.\nВторая строка." # \n - перенос строки >>> print(newline)
Первая строка.
Вторая строка.
>>> tab = "Имя:\tИван" # \t - табуляция >>> print(tab)
Имя: Иван

Вот полезные последовательности экранирования:

  • \n — создает новую строку
  • \t — добавляет табуляцию (отступ)
  • \\ — позволяет вставить обратную косую черту
  • \' — добавляет одинарную кавычку
  • \" — добавляет двойную кавычку

Raw-строки для путей и регулярных выражений

Если вы работаете с путями к файлам или регулярными выражениями, постоянное экранирование обратных косых черт может быть утомительным. Python предлагает элегантное решение – "сырые" (raw) строки с префиксом r:

Python 3.13
# Обычная строка требует двойного обратного слеша
>>> normal_path = "C:\\Users\\Username\\Documents"
>>> print(normal_path)
C:\Users\Username\Documents
# Raw-строка понимает обратные слеши буквально >>> raw_path = r"C:\Users\Username\Documents" >>> print(raw_path)
C:\Users\Username\Documents

Raw-строки значительно упрощают работу с путями в Windows и регулярными выражениями! 🚀

Основные операции со строками

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

Сложение строк (конкатенация)

Строки можно складывать с помощью оператора +, чтобы создавать новые строки:

Python 3.13
>>> first_name = "Иван"
>>> last_name = "Петров"
>>> full_name = first_name + " " + last_name
>>> print(full_name)
Иван Петров
>>> greeting = "Привет, " + full_name + "!" >>> print(greeting)
Привет, Иван Петров!

Повторение строк

С помощью оператора * можно повторить строку несколько раз:

Python 3.13
>>> star_line = "*" * 10
>>> print(star_line)
**********
>>> border = "=" * 20 >>> print(border)
====================
>>> pattern = "+-" * 5 >>> print(pattern)
+-+-+-+-+-
# Можно создавать красивые заголовки >>> title = "МЕНЮ" >>> decorated_title = f"{border}\n{title.center(20)}\n{border}" >>> print(decorated_title)
====================
МЕНЮ
====================

Это удобно для создания разделителей или визуального оформления текста!

Доступ к отдельным символам

Строки в Python – это последовательности символов, и мы можем обращаться к каждому символу по его позиции (индексу). Индексация начинается с 0:

Python 3.13
>>> word = "Python"
>>> first_letter = word[0]
>>> second_letter = word[1]
>>> last_letter = word[5]

>>> print(f"Первая буква: {first_letter}")
>>> print(f"Вторая буква: {second_letter}")
>>> print(f"Последняя буква: {last_letter}")
Первая буква: P
Вторая буква: y
Последняя буква: n
# Можно также использовать отрицательные индексы для отсчета с конца >>> last_letter = word[-1] >>> second_last_letter = word[-2] >>> print(f"Последняя буква (с конца): {last_letter}") >>> print(f"Предпоследняя буква: {second_last_letter}")
Последняя буква (с конца): n
Предпоследняя буква: o

Получение части строки (срезы)

Одна из самых мощных возможностей Python – это срезы (slices). Они позволяют извлекать подстроки, указывая начальный и конечный индексы:

Python 3.13
>>> message = "Python Programming"

# Синтаксис среза: строка[начало:конец:шаг]
# начало включается, конец исключается

>>> first_word = message[0:6]     # первые 6 символов
>>> print(f"Первое слово: {first_word}")
Первое слово: Python
>>> second_word = message[7:] # от 7-го до конца >>> print(f"Второе слово: {second_word}")
Второе слово: Programming
>>> prefix = message[:6] # от начала до 6-го (не включая 6-й) >>> print(f"Префикс: {prefix}")
Префикс: Python
>>> every_second = message[::2] # каждый второй символ >>> print(f"Каждая вторая буква: {every_second}")
Каждая вторая буква: Pto rgamn
>>> reversed_string = message[::-1] # строка задом наперед >>> print(f"В обратном порядке: {reversed_string}")
В обратном порядке: gnimmargorP nohtyP

Срезы очень гибкие:

  • Если не указать начальный индекс, срез начнется с начала строки
  • Если не указать конечный индекс, срез продолжится до конца строки
  • Отрицательный шаг позволяет обходить строку в обратном порядке

Неизменяемость строк: важная особенность! ⚠️

Важно понимать, что строки в Python являются неизменяемыми (immutable). Это значит, что после создания строки её нельзя изменить – нужно создать новую строку:

Python 3.13
>>> language = "Python"
>>> print(f"Исходная строка: {language}")
Исходная строка: Python
# Попытка изменения строки >>> try: ... language[0] = "J" # Пытаемся изменить первую букву ... except TypeError as e: ... print(f"Ошибка: {e}")
Ошибка: 'str' object does not support item assignment
# Правильный способ: создать новую строку >>> new_language = "J" + language[1:] >>> print(f"Новая строка: {new_language}")
Новая строка: Jython

Эта особенность может показаться ограничением, но на самом деле она делает код более безопасным и предсказуемым!

Полезные методы для работы со строками

Python предоставляет множество встроенных методов, которые делают работу со строками простой и удобной. Рассмотрим самые полезные из них:

Изменение регистра текста

Python 3.13
>>> text = "Python Programming"

>>> upper_case = text.upper()
>>> print(f"Верхний регистр: {upper_case}")
Верхний регистр: PYTHON PROGRAMMING
>>> lower_case = text.lower() >>> print(f"Нижний регистр: {lower_case}")
Нижний регистр: python programming
>>> title_case = text.title() >>> print(f"Заглавные первые буквы: {title_case}")
Заглавные первые буквы: Python Programming
>>> capitalized = "hello world".capitalize() >>> print(f"Только первая буква заглавная: {capitalized}")
Только первая буква заглавная: Hello world

Эти методы часто используются для стандартизации ввода пользователя или для форматирования текста.

Поиск и замена в строках 🔎

Python 3.13
>>> text = "Python - это отличный язык программирования"

# Поиск подстроки
>>> position = text.find("отличный")
>>> print(f"Слово 'отличный' начинается с позиции: {position}")
Слово 'отличный' начинается с позиции: 10
>>> count = text.count("о") >>> print(f"Буква 'о' встречается {count} раза")
Буква 'о' встречается 3 раза
# Проверка начала и конца строки >>> starts_with = text.startswith("Python") >>> print(f"Строка начинается с 'Python': {starts_with}")
Строка начинается с 'Python': True
>>> ends_with = text.endswith("!") >>> print(f"Строка заканчивается на '!': {ends_with}")
Строка заканчивается на '!': False
# Проверка наличия подстроки >>> contains = "отличный" in text >>> print(f"Строка содержит слово 'отличный': {contains}")
Строка содержит слово 'отличный': True
# Замена подстрок >>> new_text = text.replace("отличный", "прекрасный") >>> print(f"Текст после замены: {new_text}")
Текст после замены: Python - это прекрасный язык программирования

Разделение и объединение строк 🧩

Эти методы очень полезны при работе с данными:

Python 3.13
# Разделение строки на список слов
>>> sentence = "Python - это отличный язык программирования"
>>> words = sentence.split()
>>> print(f"Список слов: {words}")
Список слов: ['Python', '-', 'это', 'отличный', 'язык', 'программирования']
# Разделение по конкретному разделителю >>> csv_data = "яблоко,банан,вишня" >>> fruits = csv_data.split(",") >>> print(f"Список фруктов: {fruits}")
Список фруктов: ['яблоко', 'банан', 'вишня']
# Объединение списка в строку >>> words_to_join = ["Python", "это", "здорово"] >>> joined_sentence = " ".join(words_to_join) >>> print(f"Объединенное предложение: {joined_sentence}")
Объединенное предложение: Python это здорово
# Объединение с другим разделителем >>> path_parts = ["C:", "Users", "Username", "Documents"] >>> path = "\\".join(path_parts) >>> print(f"Путь к файлу: {path}")
Путь к файлу: C:\Users\Username\Documents

Удаление лишних символов 🧹

Для очистки текста от лишних пробелов или других символов:

Python 3.13
>>> text_with_spaces = "   Python   "

# Удаление пробелов с обоих концов
>>> cleaned = text_with_spaces.strip()
>>> print(f"Без пробелов: '{cleaned}'")
Без пробелов: 'Python'
>>> left_cleaned = text_with_spaces.lstrip() >>> print(f"Без пробелов слева: '{left_cleaned}'")
Без пробелов слева: 'Python '
>>> right_cleaned = text_with_spaces.rstrip() >>> print(f"Без пробелов справа: '{right_cleaned}'")
Без пробелов справа: ' Python'
# Удаление конкретных символов >>> text_with_dots = "...Python..." >>> without_dots = text_with_dots.strip('.') >>> print(f"Без точек: '{without_dots}'")
Без точек: 'Python'

Форматирование строк: красивый вывод 💅

Часто нам нужно вставлять значения переменных в текст. Python предлагает несколько способов форматирования строк. Вот они в порядке от самого современного и рекомендуемого к устаревшему:

F-строки (самый удобный способ!) 🌟

F-строки появились в Python 3.6 и быстро стали самым популярным способом форматирования:

Python 3.13
>>> name = "Анна"
>>> age = 25

# Просто добавьте 'f' перед строкой и вставляйте переменные в {}
>>> greeting = f"Привет, меня зовут {name} и мне {age} лет."
>>> print(greeting)
Привет, меня зовут Анна и мне 25 лет.
# Можно вставлять выражения и форматировать вывод >>> price = 19.99 >>> quantity = 3 >>> total = f"Итого: {price * quantity:.2f} руб." >>> print(total)
Итого: 59.97 руб.

F-строки не только удобны, но и работают быстрее других методов форматирования!

Метод format()

Этот метод был основным до появления f-строк:

Python 3.13
# Простое форматирование
>>> name = "Анна"
>>> greeting = "Привет, {}!".format(name)
>>> print(greeting)
Привет, Анна!
# Несколько подстановок >>> template = "Имя: {}, Возраст: {}, Рост: {}" >>> info = template.format("Иван", 25, 180) >>> print(info)
Имя: Иван, Возраст: 25, Рост: 180
# Именованные параметры (более понятный код) >>> person_info = "Я {name}, мне {age} лет".format(name="Анна", age=30) >>> print(person_info)
Я Анна, мне 30 лет
# Форматирование чисел >>> pi = 3.1415 >>> formatted = "Число Пи: {:.2f}".format(pi) >>> print(formatted)
Число Пи: 3.14

Старый стиль форматирования (%)

Это самый старый способ, который вы можете встретить в старом коде:

Python 3.13
# Старый стиль (не рекомендуется в новом коде)
>>> name = "Мария"
>>> age = 28
>>> message = "Привет, %s! Тебе %d лет." % (name, age)
>>> print(message)
Привет, Мария! Тебе 28 лет.

Проверка понимания

Давайте проверим, насколько хорошо вы поняли работу со строками:

Что будет результатом выполнения следующего кода?

Python 3.13
text = "Python"
result = text[1:4]

Мы с вами на связи
Русский