Лекция
Работа со строками: методы и форматирование в Python
Изучите работу со строками в Python: методы, форматирование и обработка текстов.
- Python
- строки
- методы строк
- форматирование
- обработка текста
- immutable
- split
- join
- f-строки
Для звонков по России
Личный кабинет
Лекция
Изучите работу со строками в Python: методы, форматирование и обработка текстов.
Подскажем по теме, разберём задание и поможем довести работу до результата.
Строки в Python похожи на списки: они поддерживают индексацию (s[0]) и срезы (s[1:4]). Главное различие — строки immutable, то есть неизменяемы. Если представить список как кухонный органайзер, куда можно перекладывать ингредиенты, то строка скорее похожа на гравированную надпись на посуде: прочитать символы можно, но стереть или заменить их напрямую нельзя.
Изменить символ по индексу не получится — Python выбросит ошибку:
label = "сахар"
# label[0] = "С" # TypeError: 'str' object does not support item assignment
Для получения строки с другим содержанием собираем новую из фрагментов исходной. Оператор + конкатенирует (склеивает) строки, а * повторяет их заданное число раз:
correct_label = "С" + label[1:] # "Сахар"
border = "-" * 20 # "--------------------"
В строках работают те же escape-последовательности, что и в других языках: \n переносит строку, \t добавляет табуляцию, а \\ вставляет обратный слеш.
| Операция | Списки | Строки |
|---|---|---|
Индексация [0] |
✅ Да | ✅ Да |
| Изменение по индексу | ✅ Да | ❌ Ошибка |
Срезы [1:3] |
✅ Да | ✅ Да |
Конкатенация + |
Создаёт новый список | Создаёт новую строку |
Продолжая кулинарную аналогию, разберём инструменты для подготовки «ингредиентов» текста. Метод split() работает как нож: разрезает строку на части по указанному разделителю (по умолчанию — пробел), возвращая список кусочков.
text = "яйца, мука, сахар"
ingredients = text.split(", ")
print(ingredients)
# ['яйца', 'мука', 'сахар']
Обратная операция — join(), который «склеивает» элементы обратно в строку через указанный разделитель. Обрати внимание на синтаксис: разделитель пишется перед точкой, а не внутри скобок.
glue = " | "
result = glue.join(ingredients)
print(result)
# яйца | мука | сахар
Метод strip() очищает строку от «кожуры» — лишних пробелов и переносов строк (\n) по краям, не трогая середину.
raw = " свежий огурец \n"
clean = raw.strip()
print(clean) # свежий огурец
Чтобы поменять один фрагмент текста на другой, используй replace(old, new). Он возвращает новую строку, где все вхождения подстроки заменены.
recipe = "200 г сахара и 100 г сахара"
fixed = recipe.replace("сахара", "меда")
print(fixed) # 200 г меда и 100 г меда
Найти позицию подстроки поможет find() — он вернёт -1, если ничего не обнаружит. А метод count() подсчитает, сколько раз элемент встречается в строке.
text = "соль и перец и соль"
pos = text.find("перец") # 8
qty = text.count("соль") # 2
Все эти методы можно объединять в цепочки (chaining), так как каждый возвращает новую строку, не изменяя оригинал — строки в Python неизменяемы.
data = " ЯЙЦА, Мука, Сахар \n"
processed = data.strip().lower().replace(", ", "-")
print(processed) # яйца-мука-сахар
Диаграмма загружается…
Чтобы «запечь» текст в определённую форму, используют шаблоны. Представьте кондитерскую форму для кексов: в неё заливается тесто — данные переменных, — а на выходе получается аккуратное изделие с чёткими границами (отформатированная строка).
Сейчас чаще всего используют f-строки (formatted string literals). Перед кавычками ставится буква f, а фигурные скобки служат окошками для вставки значений:
dish = "Круассан"
price = 125.5
quantity = 2
print(f"Блюдо: {dish}, итого: {price * quantity:.2f} руб.")
Внутри скобок работают выражения, а после двоеточия задаётся формат чисел: .2f означает два знака после запятой.
Когда шаблон требуется применять многократно, подходит метод .format() — он позволяет создать заготовку и наполнять её разными данными:
template = "{product:<12} {qty:>4} шт. {sum:>8.2f} руб."
print(template.format(product="Круассан", qty=2, sum=251.00))
print(template.format(product="Эклер", qty=1, sum=89.50))
| Способ | Синтаксис | Выравнивание |
|---|---|---|
| f-строки | f"{var:<10}" |
Вставка «на лету» |
| .format() | "{:<10}".format(var) |
Отложенное заполнение |
Символ < прижимает текст влево, > — вправо, а число задаёт ширину ячейки таблицы.
Строки связывают человеческий ввод с машинными расчётами, но сырые данные, как неочищенные продукты, требуют подготовки. Получив от клиента строку вида 'Пицца 2 350.50', программа должна разделить ингредиенты заказа, преобразовать текст в числа и выдать аккуратный расчёт.
order_line = input("Введите товар, количество и цену через пробел: ")
parts = order_line.split()
# Валидация: проверяем, что ингредиентов ровно три
if len(parts) != 3:
print("Ошибка: нужно ввести название, количество и цену")
else:
item = parts[0]
qty = int(parts[1])
price = float(parts[2])
total = qty * price
# Форматируем чек: название выровнено влево, числа — вправо
receipt = f"{item:<15} {qty:>3} шт × {price:>8.2f} ₽ = {total:>10.2f} ₽"
print(receipt)
Метод split() разрезает входную строку на части, а f-строки с форматами :<15 (выравнивание влево, ширина 15) и :>10.2f (число с двумя знаками после точки, ширина 10) превращают хаос данных в строгую таблицу. Перед математическими операциями текстовые фрагменты необходимо преобразовать в числа — int и float. Без этого шага программа попытается перемножить строки, что приведёт к ошибке.
Проверка длины списка после разделения защищает от ошибок: если пользователь введёт лишний пробел или забудет цену, программа сообщит о проблеме до попытки математических расчётов.