Поскольку строки неизменяемы, нельзя вставить символ в строку или изменить символ по заданному индексу:
Поэтому это делается так:
Слайсы
Если указать смещение меньшее, чем начало строки, оно будет обрабатываться как 0, а если указать смещение большее, чем конец строки, оно будет обработано как –1:
Типы строк
В Python существует несколько особых типов строк, определяемых буквой, стоящей перед первой кавычкой.
С буквы u начинается строка из символов Unicode - та же простая строка.
С буквы f/F начинается f-строка, которая используется для форматирования.
С буквы r/R начинается необработанная строка - предотвращает создание управляющих символов в строке.
Возможна и комбинация fr/fR/Fr/FR, с которой начинается необработанная f-строка.
С буквы b начинается значение объекта типа bytes.
Необработанные строки (r/R)
В необработанной строке escape-символы не работают:
В необработанных строках работают все реальные (а не выполненные с помощью
последовательности ‘\n’) переходы на новую строку:
Глобальная функция .format()
Позволяет форматировать строки.
Либо, если знаешь порядок переменных, можно просто нумеровать их:
В случае с передачей в скобках только одной переменной, можно в фигурных скобках не писать ничего:
Предпочтительность юзания .format() вместо f-строк
Хоть f-строки быстрее, но в некоторых местах предпочтительнее .format() :
P.S. Лично я решил бы эту задачу так:
Вот где еще предпочтительнее использовать .format(). Когда на строку ссылается переменная (“шаблон” какой-нибудь, idk) (congrats_template, в этом случае):
Подстановки (placeholders)
Общий синтаксис плейсхолдера:
В зависимости от плейсхолдера можно добавлять доп. параметры. Например, для форматирования float чисел можно:
Сначала идет двоеточие (:)
Опциональный символ-заполнитель (по умолчанию ’ ’), которым заполняется строка, если ее длина меньше, чем мин_ширина
Опциональный символ выравнивания. В этот раз вариантом по умолчанию является выравнивание по левому краю. Символ ’<’ означает выравнивание по левому краю, символ ’>’ - по правому, а символ ’^’ означает выравнивание по центру
Опциональный знак для чисел. Отсутствие значения приведет к тому, что знак будет отображаться только для отрицательных чисел. Символ ’ ’ означает, что для отрицательных чисел будет добавляться знак -, а для положительных - пробел (’ ’)
Опциональное поле мин_ширина. Необязательный символ (’.’) используется для отделения значений полей мин_ширина и макс_символы
Опциональное поле макс_символы
Тип преобразования
s: для вставки строк
В качестве результата метод format() возвращает новую отформатированную строку.
d: для вставки целых чисел
Если форматируемое число больше 999, то мы можем указать в определении плейсхолдера, что мы хотим использовать запятую в качестве разделителя разрядов:
Причем плейсхолдеры можно использовать и в f-строках:
f: для вставки дробных чисел
Также можно определить через точку количество знаков в дробной части)
Для дробных чисел, то есть таких, которые представляют тип float, перед кодом плейсхолдера после точки можно указать, сколько знаков в дробной части мы хотим вывести:
Еще один параметр позволяет установить минимальную ширину форматируемого значения в символах:
Аналогичный пример с f-строками:
%: умножает значение на 100 и добавляет знак процента
e: выводит число в экспоненциальной записи
f-strings
Быстрее, чем .format() .
Не стоит, например, математические выражения всякие писать внутри {} - лучше юзать переменные.
Я так юзаю обычно f-строки:
Для f-строк используется такой же язык форматирования, как и для .format():
В Python 3.8 появилась возможность юзать такие конструкции:
Методы и функции строк
Строковые функции юзаются так: string.function(args)
.join() - Объединение списка строк в одну
Список с str item-ами:
Список с int item-ами:
Простое соединение строк:
Результат будет тот же, что и при конкатенации (print(str_1 + str_2), но метод с .join() быстрее.
.split() - Разделение
Делит строку по пробелам (по дефолту).
Но можно и передать в скобках произвольный разделитель:
Если нужно строку с числами превратить в список с int числами, то:
.replace() - Замена подстрок
Замена до 100 экземпляров:
.strip(), .lstrip(), .rstrip() - Подрезание
Функция .strip() удаляет символы с обоих концов строки, .lstrip() - только в начале, а .rstrip() - только в конце.
Если искомого символа в строке нет→ничего не происходит:
Можно указать последовательность символов:
.find() и .index() для поиска подстрок в строке
Есть два метода поиска смещения подстроки - .find() и .index().
У каждого метода имеется возможность начинать поиск или с начала, или с конца. В случае если подстрока присутствует в строке, они работают одинаково. Если подстрока не найдена, метод .find() возвращает −1, а метод .index() генерирует исключение.
.center(), .ljust(), rjust() - Выравнивание
Строка выравнивается в пределах указанного общего кол-ва пробелов:
Методы строк: startswith, endswith, upper, lower, title
.endswith() и .startswith()
Если нужно, например, проверить, заканчивается ли строка на ‘abc’:
Тоже самое с началом:
Можно также в скобки startswith() и endswith() передать список с помощью tuple:
.lower(), .upper(), .title()
Наглядно:
Кстати, методы можно записывать друг за другом:
Сделать первые буквы слов заглавными может .title():
Старый стиль форматирования (%)
Имеет форму строка % данные, где внутри строки находятся интерполяционные последовательности. Самая простая последовательность - это символ % и буква. Буква указывает на тип данных, которые должны быть отформатированы.
Интерполяционная последовательность
Тип данных
%s
Строка
%d
int в десятичной СС
%x
int в шестнадцатеричной СС
%o
int в восьмеричной СС
%f
float в десятичной СС
%g
float в восьмеричной СС
%e
float в шестнадцатеричной СС
%%
Символ %
Можно юзать %s для любого типа данных - python отформатирует их как строку без доп. пробелов.
int
float
int и символ %
str+int
Последовательность %s внутри строки означает, что нужно интерполировать строку. Количество использованных символов %, естественно, должно совпадать с количеством
объектов, расположенных после %. Один элемент, такой как actor, располагается сразу после символа %. Если таких объектов несколько, они должны быть сгруппированы в кортеж, то есть их нужно заключить в скобки, разделив запятыми. Например, (cat, weight).
Несмотря на то что переменная weight целочисленная, последовательность %s
внутри строки преобразует ее в строку.
Подробнее про синтаксис
Сначала идет %
Опциональный символ выравнивания
Ничего или ’+’ означают выравнивание по правому краю, а ’−’ - по левому
Опциональное поле мин_ширина, в котором указывается длина строки
Опциональный символ ’.’, разделяющий поля мин_ширина и макс_символы;
Опциональное поле макс_символы
Используется в том случае, если тип преобразования s. Указывается, сколько символов значения нужно вывести на экран.
Если тип преобразования f, в этом поле указывается точность (сколько символов выводится после десятичной точки)
символ, определяющий тип преобразования (см. таблицу в начале)
Примеры для строки (%s)
Примеры для float (%f)
Примеры для int (%d)
Для целых чисел конструкция %+12d заставляет вывести знак числа, при этом строки формата, содержащие конструкцию .3, ни на что не влияют, поскольку предназначены для чисел с плавающей точкой.
Соус: Книга “Простой Python” → Глава 5. “Текстовые строки”