Методы строк в Python

Строки в Python обладают большим набором разнообразных методов. В этом посте я расскажу о наиболее популярных и полезных из них.
Методы find и rfind
Этот метод ищет подстроку в строке. В случае нахождения — возвращает первое вхождение, под которым была найдена подстрока. В случае если подстрока не найдена — возвращает -1. Значение подстроки чувствительно к реестру
Так же может принимать необязательные значения начала среза для поиска и конца среза для поиска.
Существует и брат близнец метода find — rfind. Работает он так же, но с одним отличаем — он возвращает последнее вхождение под которым была найдена подстрока.
Метод index и rindex
Точно так же как и find ищет подстроку в строке и если находит — возвращает первый вхождение. Но отличается от find, тем что в случае если подстрока не найдена возвращает ValueError.
Тоже самое можно сказать и про rindex. Возвращает последнее вхождение вхождение, в противном случае возвращает ValueError.
Метод join
Собирает строку из списка, с указанным разделителем. Этот метод вы будете использовать давольно часто, так что советую запомнить его хорошенько. Так же он выполняется гораздо быстрей чем если просто складывать эти строки.
Метод split
Этот метод, является обратным, методу join. Он разбирает строку, по указанному разделителю и возвращает результат списком.
Метод replace
Этот метод заменяет одну строку на другую. Первым параметром — то что заменяем, а вторым то на что заменяем.
Методы lower и upper
Данные методы работают с регистром строк. Метод lower() возвращает исходную строку в нижнем регистре. А метод upper() возвращает исходную строку в верхнем регистре.
Метод count
Данный метод возвращает количество вхождений подстроки. Так же может быть ограничен необязательными параметрами начала и конца среза.
Методы проверки
В эту группу входят такие методы как уже упоминаемый мною isdigit(), а так же isalpha(), isalnum(), islower(), isupper(), isspace(), istitle().
Так как про метод isdigit() я уже рассказывал, перейдем к остальным:
- isalpha() возвращает True, если строка состоит только из букв, в противном случае — False
- isalnum() возвращает True, если строка состоит из цифр и букв, в противном случае — False
- islower() возвращает True, если строка состоит из символов в нижнем регистре, в противном случае — False
- isupper() возвращает True, если строка состоит из символов в верхнем регистре, в противном случае — False
- isspace() возвращает True, если строка состоит из неотображаемых символов (пробелы, перевод страницы, новая строка и т.д.), в противном случае — False
- istitle() возвращает True, если в строке слова начинаются с заглавной буквы, в противном случае — False
Методы startswith и endswith
Эти методы так же являются методами проверки. Метод startswith проверяет, начинается ли строка с заданного шаблона. А метод endswith проверяет, заканчиваестя ли строка заданным шаблоном.
Методы удаления пробелов
Эта группа включает в себя методы strip(), lstrip(), rstrip(). Метод lstrip() удаляет пробельные символы в начале строки. Метод rstrip() удаляет пробельные символы в конце строки. А метод strip() удаляет пробельные символы и вначале и в конце строки.
Методы работы с регистром
- Метод capitalize() переводит первый символ строки в верхний регистр, а все остальные — в нижний.
- Метод title() переводит первый символ каждого слова в верхний регистр, а остальные символы этого слова — в нижний.
- Метод swapcase() меняет символы регистрами. Символы с верхним регистром становятся символами с нижним и наоборот.
Вот собственно и все наиболее часто используемые методы строк в python. Чтобы ознакомиться со всеми методами можите почитать официальную документацию.
На этом наш разговор о строках не оканчивается. В дальнейшем будет еще посты на эту тему.
Работа со строками в Python. Готовимся к собеседованию: вспоминаем азы

В этой статье мы разберем работу со строками в Python с необычного угла — глазами интервьюера на собеседовании. Информация будет полезна как новичку, так и уверенному джуну. В первой части поговорим о базовых операциях. Во второй — разберем примеры задач и вопросов, к которым стоит быть готовым.
Итак, мы на собеседовании, и я хочу узнать, умеете ли вы обращаться со строками.
Как склеить две строки?
Элементарно? Почти. Важно помнить, что строки — это неизменяемые объекты. Каждый раз, когда мы говорим про «изменение» строки, технически мы создаем новый объект и записываем туда вычисленное значение.
А как склеить три строки? Напрашивается ответ «точно так же», и иногда это самый лучший способ. Но интервьюер скорее всего хочет проверить, знаете ли вы про метод .join() .
join() — очень удобный метод, позволяющий склеить N строк, причём с произвольным разделителем.
Здесь важно не только получить результат, но и понимать, как работает приведённая конструкция. А именно, что join() — это метод объекта «строка», принимающий в качестве аргумента список и возвращающий на выходе новую строку.
Кстати, хорошая задачка для интервью — написать свою реализацию join() .
Разделить строки?
Есть несколько способов получить часть строки. Первый — это split , обратный метод для join . В отличие от join ’а, он применяется к целевой строке, а разделитель передаётся аргументом.
Второй — срезы (slices).
Срез s[x:y] позволяет получить подстроку с символа x до символа y. Можно не указывать любое из значений, чтобы двигаться с начала или до конца строки. Отрицательные значения используются для отсчёта с конца (-1 — последний символ, -2 — предпоследний и т.п.).
При помощи необязательного третьего параметра s[x:y:N] можно выбрать из подстроки каждый N-ый символ. Например, получить только чётные или только нечётные символы:
Что насчёт поиска в строке?
Самое быстрое — проверить, начинается ли (заканчивается ли) строка с выбранных символов. Для этого в Python предусмотрены специальные строковые методы.
Для поиск подстроки в произвольном месте есть метод с говорящим названием find() . Он вернет индекс начала найденного вхождения подстроки в строку, либо -1, если ничего не найдено.
Для сложных случаев, когда нужно найти не конкретную последовательность символов, а некий шаблон, помогут регулярные выражения. Они заслуживают отдельной статьи. Глубокого знания регулярок на собеседованиях не требуется, достаточно знать про них, уметь написать несложное выражение и прочитать чуть более сложное. Например, такое:
А замену в строке сделать сможете?
Во-первых, при помощи срезов и склейки строк можно заменить что угодно.
Во-вторых, умеешь find() , умей и replace() .
В-третьих, любую проблему можно решить регулярными выражениями. Либо получить две проблемы В случае с заменой вам нужен метод re.sub() .
Посимвольная обработка?
Есть бесчисленное множество задачек, которые можно решить, пройдясь в цикле по строке. Например, посчитать количество букв «о».
Иногда удобнее бежать по индексу.
Помним, что строки неизменяемы, поэтому подменить i-ый символ по индексу не получится, нужно создавать новый объект:
Либо можно преобразовать строку в список, сделать обработку, а потом склеить список обратно в строку:
А форматирование строк?
Типичная жизненная необходимость — сформировать строку, подставив в неё результат работы программы. Начиная с Python 3.6, это можно делать при помощи f-строк:
В более старом коде можно встретить альтернативные способы
Технически можно было обойтись склейкой, но это менее элегантно, а еще придётся следить, чтобы все склеиваемые кусочки были строками. Не рекомендую:
Цель работодателя на собеседовании — убедиться что вы соображаете и что вы справитесь с реальными задачами. Однако погружение в реальные задачи занимает несколько недель, а время интервью ограничено. Поэтому вас ждут учебные задания, которые можно решить за 10-30 минут, а также вопросы на понимание того, как работает код. О них и поговорим в следующей части.
Операции с текстовыми строками str в Python
Строка – это последовательность символов, то есть некоторые наборы слов. Слова могут быть как на английском языке, так и на любом другом, поддерживаемом стандартом Unicode, что означает почти на любом языке мира. По умолчанию все строки в Python-3 в Unicode.
Строки — тип str используются почти в каждой программе на Python. Поэтому уделите чуть больше внимание представленным здесь методам текстовых строк.
Метод str.capitalize() в Python, первая буква в строке заглавная.
Метод str.capitalize() позволяет вернуть копию строки str с первым символом в верхнем регистре, а остальные символы будут в нижнем регистре.
Метод str.casefold() в Python, сворачивает регистр строки.
Метод str.casefold() вернет регистр свернутой копии строки str. Вернет строку, приведенную к нижнему регистру символов в результате свертывания регистра. Строки в свернутом регистре могут быть использованы для сопоставления строк без регистра.
Метод str.center() в Python, выравнивает строку по центру.
Метод str.center() позиционирует по центру строку str, дополняя её справа и слева до требуемой длины width указанным символом fillchar. По умолчанию fillchar использует пробел ASCII
Метод str.count() в Python, считает совпадения в строке.
Метод str.count() возвращает количество вхождений подстроки sub в строку str в диапазоне индексов [start, end]. Необязательные аргументы start и end интерпретируются как обозначения среза строки.
Метод str.encode() в Python, переводит строку в байты.
Метод str.encode() вернет закодированную версию строки str как объект байтов. Другими словами кодирует текстовую строку str в строку байтов, используя указанную кодировку encoding.
Метод str.endswith() в Python, совпадение с концом строки.
Метод str.endswith() возвращает True, если строка str заканчивается указанным суффиксом suffix, в противном случае возвращает False. Суффикс suffix также может быть кортежем суффиксов для поиска.
Метод str.expandtabs() в Python, меняет табуляцию на пробел.
Метод str.expandtabs() возвращает копию строки str, в которой все символы табуляции \t заменяются одним или несколькими пробелами, в зависимости от текущего столбца и заданного размера табуляции tabsize.
Метод str.find() в Python, индекс первого совпадения в строке.
Метод str.find() возвращает наименьший индекс в строке str, где подстрока или символ sub находится в пределах среза str[start:end]. Другими словами, находит и возвращает индекс начала подстроки в строке str.
Метод str.format() в Python, форматирует строку.
Метод str.format() выполняет операцию форматирования строки str. Строка str может иметь замещающие поля <>. Каждое такое поле содержит либо числовой индекс позиционного аргумента, либо имя ключевого аргумента.
Метод str.format_map() в Python
Метод str.format_map() работает аналогично str.format(**mapping), за исключением того, что mapping используется напрямую и не копируется в словарь dict. Это полезно, если, например mapping, подкласс dict.
Метод str.index() в Python, индекс первого совпадения подстроки.
Метод str.index() возвращает индекс первого совпадения подстроки sub в строке str, где подстрока или символ sub находится в пределах среза str[start:end]. Метод бросает исключение ValueError, если символ или подстрока sub не найдены.
Метод str.isalnum() в Python, строка состоит из цифр и букв.
Метод str.isalnum() возвращает True, если все символы в строке являются буквенно-цифровыми и есть хотя бы один символ, в противном случае False.
Метод str.isalpha() в Python, строка состоит только из букв.
Метод строки str.isalpha() возвращает True, если все символы в строке str являются буквенными и есть хотя бы один символ, в противном случае False.
Метод str.isascii() в Python, все символы в строке являются ASCII.
Метод str.isascii() возвращает True, если строка пуста или все символы в строке являются ASCII, False в противном случае.
Метод str.isdecimal() в Python, проверяет строку на десятичное число.
Метод str.isdecimal() возвращает True, если все символы в строке являются десятичными и есть хотя бы один символ, в противном случае False.
Метод str.isdigit() в Python, строка состоит только из цифр.
Метод str.isdigit() возвращает True, если все символы в строке являются цифрами и есть хотя бы один символ, в противном случае False.
Метод str.isidentifier() проверяет строку на идентификатор Python.
Метод str.isidentifier() возвращает True, если строка str является допустимым идентификатором в соответствии с определением языка, в противном случае False.
Метод str.islower( ) в Python, проверяет строку на нижний регистр.
Метод str.islower() возвращает True, если все символы в строке имеют нижний регистр и есть хотя бы один символ, в противном случае False.
Метод str.isnumeric() в Python, проверяет строку на числовые символы.
Метод str.isnumeric() возвращает True, если все символы в строке являются числовыми символами, и есть по крайней мере один числовой символ, False в противном случае
Метод str.isprintable() в Python, проверяет на доступность для печати.
Метод str.isprintable() возвращает True, если все символы в строке доступны для печати или строка пуста, в противном случае False.
Метод str.isspace() в Python, является ли строка пробелом.
Метод str.isspace() возвращает True, если в строке есть только пробелы и если есть хотя бы один пробел, в противном случае False.
Метод str.istitle() в Python, проверяет наличие заглавных букв в словах.
Метод str.istitle() возвращает True, если каждое слово в строке str начинается с заглавной буквы и в ней есть хотя бы один символ в верхнем регистре. Возвращает False в противном случае.
Метод str.isupper() в Python, проверяет строку на верхний регистр.
Метод str.isupper() возвращает True, если все символы в строке str прописные и есть хотя бы один символ в верхним регистре, в противном случае False.
Метод str.join() в Python, объединяет список строк.
Метод str.join() возвращает строку, которая является конкатенацией элементов объекта со строками iterable. Разделителем между элементами является строка str.
Метод str.ljust() в Python, ровняет строку по левому краю.
Метод str.ljust() вернет новую строку с текстом str, выровненным по левому краю и шириной width. Заполнение строки str выполняется с использованием указанного символа fillchar. По умолчанию используется пробел ASCII.
Метод str.lower() в Python, строку в нижний регистр.
Метод str.lower() вернет копию строки str, в которой все символы будут преобразованы в нижний регистр.
Метод str.lstrip() в Python, обрезает символы в начале строки.
Метод str.lstrip() вернет копию строки str с удаленными символами начала строки chars. Аргумент chars — это строка, указывающая набор удаляемых символов.
Метод str.maketrans() в Python, таблица символов для str.translate().
Статический метод str.maketrans() таблицу преобразования символов, используемую для метода str.translate().
Метод str.partition() в Python, делит строку по первому совпадению.
Метод str.partition() разбивает строку при первом появлении разделителя sep и вернет кортеж, содержащий часть строки str перед разделителем, сам разделитель sep и часть строки str после разделителя.
Метод str.removeprefix() в Python, удаляет префикс строки.
Если строка str начинается со строки префикса prefix, то метод str.removeprefix() возвращает копию строки без префикса string[len(prefix):].
Метод str.removesuffix() в Python, удаляет суффикс строки.
Если исходная строка str заканчивается строкой суффикса suffix, то метод str.removesuffix() возвращает копию строки без суффикса string[:-len(suffix)].
Метод str.replace() в Python, меняет подстроку/символ в строке.
Метод str.replace() вернет копию строки, в которой все вхождения подстроки old заменены на подстроку new.
Метод str.rfind() в Python, индекс последнего совпадения подстроки.
Метод str.rfind() возвращает индекс последнего совпадения подстроки sub в строке str, где подстрока или символ sub находится в пределах среза str[start:end].
Метод str.rindex() в Python, индекс последнего совпадения в строке.
Метод str.rindex() возвращает индекс последнего совпадения подстроки sub в строке str, где подстрока или символ sub находится в пределах среза str[start:end]. Метод бросает исключение ValueError, если символ или подстрока sub не найдены
Метод str.rjust() в Python, ровняет строку по правому краю.
Метод str.rjust() вернет новую строку с текстом str, выровненным по правому краю и шириной width.
Метод str.rpartition() в Python, делит строку по последнему совпадению.
Метод str.rpartition() разбивает строку при последнем появлении разделителя sep и вернет кортеж, содержащий часть строки str перед разделителем, сам разделитель sep и часть строки str после разделителя.
Метод str.rsplit() в Python, делит строку с права.
Метод str.rsplit() возвращает список подстрок (слов) из строки str, используя разделитель sep в качестве разделителя строки str. Метод str.rsplit() деление строки начинает с права.
Метод str.rstrip() в Python, обрезает символы на конце строки.
Метод str.rstrip() вернет копию строки str с удаленными символами конца строки chars. Другими словами, обрежет сзади строку str на заданные символы chars. Аргумент chars — это строка, указывающая набор удаляемых символов.
Метод str.split() в Python, делит строку по подстроке.
Метод str.split() возвращает список слов в строке, используя sep в качестве разделителя строки. Если задан maxsplit, то выполняется не более maxsplit разбиений, таким образом, список будет иметь не более maxsplit+1 элементов.
Метод str.splitlines() в Python, делит текст по символу '\n'.
Метод str.splitlines() возвращает список строк, текста str, разделенного по универсальным разрывам строк. Разрывы (разделители) строк не включаются в результирующий список, если не задано значение keepends=True.
Метод str.startswith() в Python, совпадение с началом строки.
Метод str.startswith() возвращает True, если строка str начинается указанным префиксом prefix, в противном случае возвращает False. Ограничивать поиск начала строки можно необязательными индексами start и end.
Метод str.strip() в Python, обрежет строку с обоих концов.
Метод str.strip() вернет копию строки str с удаленными начальными и конечными символами chars. Другими словами, обрежет строку str с обоих концов. Аргумент chars — это строка, указывающая набор удаляемых символов.
Метод str.swapcase() в Python, сменит регистр символов в строке.
Метод str.swapcase() возвращает копию строки с прописными символами, преобразованными в строчные и наоборот. Другими словами метод меняет регистр символов в строке str.
Метод str.title() в Python, каждое слово с заглавной буквы.
Метод str.title() возвращает копию строки, в которой у каждого слова, первый символ имеет верхний регистр, а остальные символы слова переводятся в нижний регистр.
Метод str.translate() в Python, транслирование строки.
Метод str.translate() возвращает копию строки, в которой каждый символ был сопоставлен и преобразован согласно карте перевода символов table.
Метод str.upper() в Python, переведет строку в верхний регистр.
Метод str.upper() вернет копию строки str с символами, преобразованными в верхний регистр. Используемый алгоритм преобразования в верхний регистр описан в разделе 3.13 стандарта Unicode.
Метод str.zfill() в Python, дополнит строку нулями.
Метод str.zfill() вернет копию строки, у которой начало строки будет заполнено цифрой ASCII 0, до указанной длины width. Начальный префикс знака '+' / '-' обрабатывается путем вставки отступа после символа знака, а не до него.
Форматирование строк в стиле printf в Python.
Строки имеют одну уникальную встроенную операцию: оператор %. При заданном формате 'string' % values, спецификации преобразований в string заменяются на ноль или более элементов значений. Эффект аналогичен использованию sprintf() в языке C.
F-строки. Форматированные строки в Python.
Форматированный строковый литерал или f-string — это строковый литерал с префиксом 'f' или'F'. Эти строки могут содержать поля замены, которые являются выражениями, разделенными фигурными скобками <>.