Здравствуйте.
Напишу небольшую статью о работе со строками в Python. Да тема уже есть и не одна, но я в большей степени сделаю для себя, чтобы было куда подглянуть в случае чего. Возможно, кому-то пригодится, возможно, нет.
Итак, начнем. Строки - это тип данных, который считается неизменяемым, т.е. его нельзя изменить, точнее нельзя изменить его (или ее) нельзя изменить. Можно заменить значение строковой переменной, но не содержание.
Чтобы больше понять строки, порешаем некоторые задачи, используя методы для работы со строками, используя регулярные выражения и позможно что-то еще, пока не знаю. Скорее всего эта статья будет дописываться и перерабатываться. Ну чтож пожулаю сам себе удачи в написании и поехали.
Методы строк.
Сначала выведем все методы небольшой программой.
Получаем вот такой список: capitalize, casefold, center, count, encode, endswith, expandtabs, find, format, format_map, index, isalnum, isalpha, isascii, isdecimal, isdigit, isidentifier, islower, isnumeric, isprintable, isspace, istitle, isupper, join, ljust, lower, lstrip, maketrans, partition, removeprefix, removesuffix, replace, rfind, rindex, rjust, rpartition, rsplit, rstrip, split, splitlines, startswith, strip, swapcase, title, translate, upper, zfill. Начнем по порядку (python v.3.10.4).
Создать строки можно с помощью одинарных кавычек, двойных кавычек. А еще используются тройные пары двойных кавычек, но они используются в определенных случаях.
capitalize
Данный метод делает первую буквы заглавной, остальные в строке строчные.
casefold
Данный метод приводит все к нижнему регистру для сравнения строк.
В отличие от метода lower метод casefold работает только с символами в кодировке Unicode.
center
Данный метод делает весьма удобную вешь при решении задач. Он заполняет пустые места в строке, указанным символом. Есть 2 параметра: длина, к которой нужно привести и символ (строго один), которой нужно заполнить.
count
Данный метод подсчитывает количество вхождений указанной подстроки в строке. Имеет параметры:
- строка, которую ищем
- начало, откуда начинаем искать
- конец, до какого символа будем искать
encode
Переводит строку в двоичный код. Имеет 2 параметра:
- кодировка (строка), в которую необходимо перевести
- ошибка (строка) - схема обработки ошибок, используемая для кодирования ошибок. По умолчанию установлено значение «строгий», что означает, что ошибки кодирования вызывают ошибку UnicodeEncodeError. Другими возможными значениями являются «ignore», «replace» и «xmlcharrefreplace», а также любое другое имя, зарегистрированное с помощью codecs.register_error, которое может обрабатывать ошибки UnicodeEncodeErrors.
endswith
Этот метод возвращает False или True, в зависимости от того, оканчивается ли строка на указанную подстроку.
Имеет 3 параметра:
- строка, по которой проверяем заканчивается ли строка. Либо здесь можно указать кортеж, в которых указывается возможные окончания.
- начало, откуда начинаем проверять
- конец, момент до которого проверяем
expandtabs
Метод заменяет табуляцию на пробелы, количество которых указано в скобках.
find
Метод ищет первое вхождение подстроки в строке. Имеет 3 параметра:
- подстрока, которую ищем
- начало
- конец
Возвращет позицию в строке или -1 если не найдено.
format
Данный метод подставляет в строку данные, которые находятся в атрибутах функции.
Либо использовать словарь, чтобы подставлять значения ключей.
Использование форматирования типов
format_map
Здесь почти та же ситуация, используется словарь.
index
Производит поиск подстроки в строке. Отличие от метода find в том, что в случае не обнаружения, выдается ошибка: ValueError: substring not found.
Имеет 3 параметра:
- подстрока, которую ищем
- начало
- конец
isalnum
Проверяет является ли строка, состоящей из букв и цифр. Возвращает False или True.
isalpha
Проверяет является ли строка, состоящей из букв. Возвращает False или True.
isascii
Проверяет является ли строка, состоящей из символов таблицы ASCII. Возвращает False или True.
isdecimal
Проверяет является ли строка, состоящей из цифр. Возвращает False или True.
isdigit
Проверяет является ли строка, состоящей из цифр. Возвращает False или True.
isidentifier
Проверяет является ли строка, возможным идентификатором. Возвращает False или True.
islower
Проверяет является ли строка, записанная только строчными символами. Возвращает False или True.
isnumeric
Проверяет является ли строка, состоящей из цифр. Возвращает False или True.
Разница между тремя методами isdigit, isnumeric, isdecimal:
str.isdecimal() Возвращает True, если все символы в строке являются десятичными символами и имеется хотя бы один символ, в противном случае — False. Десятичные символы — это те символы, которые можно использовать для формирования чисел по основанию 10, например U+0660, АРАБСКАЯ-ИНДИЙСКАЯ ЦИФРА НОЛЬ. Формально десятичный символ — это символ общей категории Юникода «Nd».
str.isdigit() Возвращает True, если все символы в строке являются цифрами и имеется хотя бы один символ, в противном случае — False. Цифры включают десятичные символы и цифры, требующие специальной обработки, например цифры верхнего индекса совместимости. Сюда входят цифры, которые нельзя использовать для образования чисел по основанию 10, например числа Харости. Формально цифра — это символ, имеющий значение свойства Numeric_Type=Digit или Numeric_Type=Decimal.
str.isnumeric() Возвращает True, если все символы в строке являются цифрами и имеется хотя бы один символ, в противном случае — False. К цифровым символам относятся символы цифр и все символы, имеющие свойство числового значения Юникода, например U+2155, ОБЫЧНАЯ ДРОБЬ ОДНА ПЯТАЯ. Формально числовыми символами являются символы со значением свойства Numeric_Type=Digit, Numeric_Type=Decimal или Numeric_Type=Numeric.
isprintable
Проверяет является ли строка, состоящей из символов, которые можно распечатать. Возвращает False или True.
isspace
Проверяет является ли строка, состоящей из пробельных символов. Возвращает False или True.
istitle
Проверяет начинается ли строка с заглавной буквы. Возвращает False или True.
isupper
Проверяет является ли строка, состоящей из заглавных букв. Возвращает False или True.
join
Метод предназначенный для итерируемых объектов, т.е. те, которые состоят из элементов: списки, кортежи.
Примечание, элементы объекта должны быть строкой.
ljust
Заполняет слева указанным символом до указанной длины.
Имеет 2 параметра:
- длина выходной строки
- символом, которым нужно заполнить
lower
Переводит строку в нижний регистр, все символы будут маленькими.
lstrip
Удаляет пробелы слева у строки.
maketrans
Возвращает таблицу пакетной замены символов для str.translate().
partition
Разбивает строку на три составляющие (начало, разделитель, конец) и возвращает в виде кортежа.
removeprefix
Удаляет начало строки, префикс.
removesuffix
Удаляет конец строки, смотри пример-аналогию removeprefix.
replace
Заменяет в строке подстроку1 на построку 2. Имеет 3 параметра:
- подстрока1, которую ищем
- подстрока2, на которую заменяем
- количество замен
rfind
Поиск символа с конца строки. Возвращает индекс вхождения или -1, если не найдено. Имеет 3 параметра:
- подстрока, которую ищем
- начало
- конец
rindex
Поиск символа с конца строки. Возвращает индекс вхождения или ошибку (ValueError: substring not found), если не найдено. Имеет 3 параметра:
- подстрока, которую ищем
- начало
- конец
rjust
Заполняет слева указанным символом до указанной длины.
Имеет 2 параметра:
- длина выходной строки
- символом, которым нужно заполнить
rpartition
Разбивает строку на три составляющие (начало, разделитель, конец), но справа и возвращает в виде кортежа.
rsplit
Разбивает строку по подстроке и превращает в список. Разбивание происходит справа. Имеет 2 параметра:
- подстрока, по которой бедет разбита строка
- количество делений
rstrip
Удаляет пробелы справа.
split
Разбивает строку по подстроке и превращает в список. Разбивание происходит справа. Имеет 2 параметра:
- подстрока, по которой бедет разбита строка
- количество делений
Различие split и rsplit на примере:
splitlines
Разбивает строку по \n.
startswith
Этот метод возвращает False или True, в зависимости от того, оканчивается ли строка на указанную подстроку.
Имеет 3 параметра:
- строка, по которой проверяем заканчивается ли строка. Либо здесь можно указать кортеж, в которых указывается возможные окончания.
- начало, откуда начинаем проверять
- конец, момент до которого проверяем
strip
Удаляет пробелы спереди и сзади.
swapcase
Меняет регистр букв, маленькие делает заглавными и наоборот.
title
Каждый первый символ слова в строке делает с заглавной буквы.
translate
Смотри maketrans
upper
Делает все символы в строке в верхнем регистре (заглавными буквами).
zfill
Заполняет нулями строку до указанной длины.
Соединение методов
Данные методы можно применять друг за другом.
Конкатенация строк
Конкатенация строк по-другому называется склейка. Т.е. допустим нам нужно соединить 2 типа данных: строку и число. Для этого используется символ "+".
Умножение строк
Если необходимо сделать строку определенной длины из повторяющихся строк, то лучше использовать умножение. Напишем небольшую задачу:
Методы которые можно применять к строкам
len - Возвращает длину строки.
dir - Возвращает список методов строки
type - возвращает тип объекта
id - возвращает id объекта
Преобразование типов
str - преобзование объекта к типу строка
int - преобразование строки к целому типу (строка должна состоять только из цифр)
float - преобразование строки к дробному типу (строка должна состоять только из цифр и одного символа ".")
list - преобразование строки в список по символам
Работа с таблицей ASCII.
ord - преобразование символа в код таблицы ASCII.
chr - преобразование кода таблицы ASCII в символ.
Выполнение кода в виде строки
eval - вычисляет строковое выражение
exec - выполняет строковое выражение
Итераторы для строк
reversed - переворачивает строку и возвращает итератор
sorted - сортирует строку и возвращает итератор
Индексы и срезы
Индексы
Так как строка - это итерируемый объект, т.е. который можно разобрать посимвольно через цикл for, то у него есть такое понятие как индексы. Каждый символ имеет свой индекс. Индексация начинается с нуля. Если идти с конца, то индексация начинается с -1.
s[0] - первый символ строки
s[1] - второй символ строки
s[-1] - последний символ строки
s[-2] - предпоследний символ строки
Разобрать строку через цикл for
Cрезы
Срезы - это классная вещь в Python. Через них можно получать разные части строки. Давайте на примерах, чтобы понималось лучше.
Прочие возможности для строк
f-строки или format
F-строки как и метод format помогают избежать конкатенацию. Проще использовать целую строку и сделать в ней нужные вставки, чем использовать много плюсов и преобразование типов к строке. Считается, что f-строки работают быстрее, чем format и %.
Отличие f-строк и метода format небольшое: в f-строках символ f ставится перед строкой, а format используется как метод строки и в скобках указывается аргументы или именованные параметры.
Небольшое дополнение по выравниванию
r-строки - сырые строки
Данный вид строк применяется когда нужно выключить экранирование. Опять жа для понимания приведу пару примеров.
Оператор % в строках
Этот оператор иногда приносит пользу (по крайне мере мне точно). Например, когда нужно округлить числа, потому как встроенное округление работает немного не так как мы привыкли.
Фух. На этом все. Примеры и разборы задач будут в другой статье.
Жду ваших комментариев и лайков (жмем не жалеем).
Понравилась статья - подписывайся.
Мои курсы по информатике, математике и Python.
Курсы по технологиям: RabbitMQ, Redis, MongoDB и прочее.
Также приглашаю присоединится к моему сообществу в VK и каналу YouTube.