Строковые методы в Python
Подробное руководство по использованию строковых методов center, find, isalnum, replace, casefold, endswith, index, isdecimal, isdigit, join, split, isnumeric, isspace, isupper, partition в Python
Введение
Строка – это такой порядок символов. Строки начинают считываться со ввода функции input().
Строки принадлежат к объектам класса str.
В сегодняшней статье мы рассмотрим методы строк.
Строковые методы в Python нужны для того, чтобы решить разные задачи. Ведь очень часто сами строки не могут реализовать все операции. Важно не забывать, что строковые методы не будут производить дополнительных действий и не будут менять начальные строки. Методы очень часто сравнивают с функциями. Они также могут вернуть результаты своей операции. Методы очень сильно связаны с типом данных.
Вообще в языке программирования Python есть более 30 методов строк, но в данной статье я расскажу о таких методах как center(), find(), isalnum(), replace(), casefold(), endswith(), index(), isdecimal(), isdigit(), join(), split(), isnumeric(), isspace(), isupper(), partition().
Метод center()
Этот метод нужно применять в тех случаях, если нужно выравнять строку по центру. Выравнивание будет выполняться с пробела. Сам метод составляет в себя несколько параметров: это length (есть обязательным параметром и показывает длину строки) и fillchar (символ выравнивания). Если вы указали новое число для ширины новой строки, чем той, которая была в начальной строке, то вы получите такой же код какой был в начале.
Пример кода:
Вывод программы:
Метод find()
С помощью метода find() вы можете находить необходимые индексы первого вхождения подстроки в последовательности (строке).
Пример кода:
Вывод программы:
Метод isalnum()
Метод isalnum() нужен для того, чтобы выяснить есть ли в строке буквы или цифры. isalnum() вернет True в тех случаях, когда строка заполнена либо символами, либо числами.
Пример кода:
Вывод программы:
Метод replace()
Метод replace() нужен для того, чтобы вернуть копии строки или заменить небольшую ее часть.
Пример кода:
Вывод программы:
Метод casefold()
Этот метод необходим для того, чтобы преобразовать строку в сложенный регистр. Сложенный регистр это почти тоже самое что нижний регистр, но более агрессивно.
Пример кода:
Вывод программы:
Метод endswith()
Метод нужен для того, чтобы вернуть True, если строка имеет искомый суффикс. Данный метод может принимать такие три параметра в позициях: суффиксы-строки или кортежи с суффиксами, чтобы проверять данные в строках; start — это необязательный параметр, который помогает проверять суффиксы в строках; end — тоже необязательный параметр, который нужен для проверки суффиксов в строках.
Итак, сам метод нужен чтобы возвратить True или False, если строки заканчиваются суффиксом или не заканчиваются никакими суффиксами. Также в языке Python есть возможность передавать суффиксы кортежей. Если в вашей строке есть окончания на элемент кортежа, то данный метод вернет True. Если этого нет, то вернется False.
Пример кода:
Вывод программы:
Метод index()
Данный метод возвращает индексы подстрок в середине строк. Если во время проверки не найдётся нужная подстрока, то пишется, что нашлась ошибка (ValueError). Метод может принимать данные параметров: sub (главная подстрока, которую нужно искать в строке), start (начало поиска подстроки), end (необязательный параметр, конец поиска подстроки).
По данному методу можно обнаружить начало указанной подстроки в исходной. Необязательные позиции start и end нужны для того, чтобы принимать любые значения и поддерживать механизмы срезов.
Методом можно воспользоваться в случаях необходимости найти начальные индексы подстроки.
Пример кода:
Вывод программы:
Метод isdecimal()
С помощью этого метода можно вернуть True, в тех случаях, когда символы в строках являются десятичными числами. Если десятичных чисел в строке не нашлось, то возвращается False. Данный метод определяет есть ли цифры в строке. В таком случае возвращается True. Если в строке есть пробелы, буквы, точка или вообще пустая строка, возвращается False.
Пример кода:
Вывод программы:
Метод isdigit()
Данный метод похож на метод isdecimal(). True появляется в результате, если цифры в строке есть и False, если в строке появляется пробел или другой символ, буква, нижнее подчеркивание или смайлик.
С помощью метода isdigit() вы можете понять, что необходимая строка содержит цифры.
Но есть одно но: данный метод работать в тех случаях, если ваши числа являются положительными, на отрицательные данный метод не работает.
Пример кода:
Вывод программы:
Метод join()
Он помогает собирать строки из списков с определёнными разделителями.
Данный метод отвечает за превращение списка в строку. Он может использоваться тогда, когда нужно принять итерируемые объекты как аргумент, а список очень часто выступает аргументом. Нужно знать, что этот список должен состоять из строк.
Очень часто начинающие python-программисты задаются вопросом: почему метод join() относится к методам строки, а не методам списка. Отвечаю: функцию join() вы можете использовать в разных целях и с разными итерируемыми объектами, но в результате вы получаете только строку.
Пример кода:
Вывод программы:
Метод join() нельзя использовать в тех случаях, где объединять элементы разного типа. Чтобы не сделать ошибку, превращайте все объекты списка в строки. Это обязательное требование. С помощью метода join() вы можете разбивать строки и обратно преобразовать строку в список.
Метод split()
Метод split() есть противоположностью методу join. С его помощью можно разбить строки по нужному вам разделителю и получить список строк.
Метод split() может принимать несколько параметров. Первый параметр — это разделитель, по которому будет разделяться строка. Если вы не указали разделитель, то любой символ (пробел или даже другая строка) уже автоматически считается новым разделителем. Другой параметр — это maxsplit. Он нужен для того, чтобы показать какое будет число разделений в строке. Если вы укажите maxsplit, то ваш список будет иметь maxsplit и еще один объект.
Пример кода:
Вывод программы:
Метод isnumeric()
Мы прекрасно помним, что Python имеет динамическую типизацию (когда в объектах хранится информация о значении и информации о типах объектов; сама типизация имеет ряд преимуществ). Очень часто с помощью различных строковых методов не нужно менять тип данных. В Python есть встроенный метод isnumeric(). Он нужен чтобы обрабатывать строки.
Метод isnumeric() возвращает True в тех случаях, если символы оказываются числовыми символами. Если этого не происходит, то выводится False.
С помощью метода isnumeric() можно определить есть ли в аргументе дроби, целые числа, индекса (верхние и нижние), арабские и римские цифры.
Пример кода:
Вывод программы:
Метод isspace()
С помощью данного метода вы сможете проверить есть ли в строке пробелы. Этот метод не имеет никаких параметров. Если строка пуста или имеет один пробел, то вы в результате увидите False. Если наоборот, то True.
Пример кода:
Вывод программы:
Метод isupper()
Данная строковая функция (метод) нужна для того, чтобы вы могли проверить все ли введенные буквы находятся в верхнем регистре. Метод isupper() позволяет вам вернуть True в тех случаях, если ваши буквы будут в строке прописными. Если нет — то будет выводится False.
Пример кода:
Вывод программы:
Нужно помнить о том, что данный метод не будет принимать других аргументов, а будет работать только с указанными вами аргументами.
Метод partition()
Данный метод нужен для того, чтобы строка разбилась на начало, середину и конец. В результате будет кортеж. В основном строка будет разбиваться слева направо.
Метод имеет один параметр sep. Он может содержать один или несколько букв или символов.
Пример кода:
Вывод программы:
Заключение
В данной статье мы рассмотрели как использовать основные метолы строк и какие у них существуют аргументы. Больше информации о строковых методах можно получить из официальной документации Python.
Основные методы строк
Как мы уже неоднократно говорили, в Python строки являются объектами и у этих объектов есть методы, то есть, функции, выполняющие определенные действия:
Для примера, предположим, у нас имеется такая, уже классическая строка:
и мы собираемся для нее вызвать метод
который возвращает строку со всеми заглавными буквами. Для этого, пишется сама строка, ставится точка и записывается имя метода. В конце обязательно ставим круглые скобки:
Вот по такому синтаксису вызываются различные методы строк. Причем, сама переменная string продолжает ссылается на ту же самую неизмененную строку «Hello World!». Как мы с вами говорили на предыдущем занятии, строки – это неизменяемые объекты, поэтому метод upper возвращает новую строку с заглавными буквами, не меняя прежней.
Если бы нам потребовалось изменить строку, на которую ссылается переменная string, то это можно сделать так:
В этом случае переменная станет ссылаться на новый строковый объект с заглавными буквами, а прежний будет автоматически удален сборщиком мусора (так как на него не будет никаких внешних ссылок).
Также этот метод мы можем вызвать непосредственно у строкового литерала:
Так тоже можно делать.
Ну и раз уж мы затронули метод upper, который переводит буквы в верхний регистр, то отметим противоположный ему метод:
который, наоборот, преобразует все буквы в строчные. Например:
возвращает строку «hello world!». Соответственно, сама строка здесь остается прежней, измененным является новый строковый объект, который и возвращает метод lower. По такому принципу работают все методы при изменении строк. Следующий метод
String.count(sub[, start[, end]])
В самом простом случае, мы можем для строки
определить число повторений сочетаний «ra»:
получим значение 2 – именно столько данная подстрока встречается в нашей строке.
Теперь предположим, что мы хотим начинать поиск с буквы k, имеющей индекс 4.
Тогда метод следует записать со значением start=4:
и мы получим значение 1. Далее, укажем третий аргумент – индекс, до которого будет осуществляться поиск. Предположим, что мы хотим дойти до 10-го индекса и записываем:
и получаем значение 0. Почему? Ведь на индексах 9 и 10 как раз идет подстрока «ra»? Но здесь, также как и в срезах, последний индекс исключается из рассмотрения. То есть, мы говорим, что нужно дойти до 10-го, не включая его. А вот если запишем 11:
то последнее включение найдется.
String.find(sub[, start[, end]])
возвращает индекс первого найденного вхождения подстроки sub в строке String. А аргументы start и end работают также как и в методе count. Например:
вернет 1, т.к. первое вхождение «br» как раз начинается с индекса 1. Поставим теперь значение start=2:
и поиск начнется уже со второго индекса. Получим значение 8 – индекс следующего вхождения подстроки «br». Если мы укажем подстроку, которой нет в нашей строке:
Метод find ищет первое вхождение слева-направо. Если требуется делать поиск в обратном направлении: справа-налево, то для этого используется метод
String.rfind(sub[, start[, end]])
который во всем остальном работает аналогично find. Например:
возвратит 8 – первое вхождение справа.
Наконец, третий метод, аналогичный find – это:
String.index(sub[, start[, end]])
Он работает абсолютно также как find, но с одним отличием: если указанная подстрока sub не находится в строке String, то метод приводит к ошибке:
String.replace(old, new, count=-1)
Выполняет замену подстрок old на строку new и возвращает измененную строку. Например, в нашей строке, мы можем заменить все буквы a на o:
на выходе получим строку «obrokodobro». Или, так:
Используя этот метод, можно выполнять удаление заданных фрагментов, например, так:
Третий необязательный аргумент задает максимальное количество замен. Например:
Следующие методы позволяют определить: из каких символов состоит наша строка. Например, метод
возвращает True, если строка целиком состоит из букв и False в противном случае. Посмотрим как он работает:
вернет True, т.к. наша строка содержит только буквенные символы. А вот для такой строки:
мы получим False, т.к. имеется символ пробела.
возвращает True, если строка целиком состоит из цифр и False в противном случае. Например:
т.к. имеется символ точки, а вот так:
получим значение True. Такая проверка полезна, например, перед преобразованием строки в целое число:
возвращает новую строку с заданным числом символов width и при необходимости слева добавляет символы fillchar:
Получаем строку « abc» с двумя добавленными слева пробелами. А сама исходная строка как бы прижимается к правому краю. Или, можно сделать так:
Получим строку «—abc». Причем вторым аргументом можно писать только один символ. Если записать несколько, то возникнет ошибка:
Если ширина width будет меньше длины строки:
то ничего не изменится. Аналогично работает метод
который возвращает новую строку с заданным числом символов width, но добавляет символы fillchar уже справа:
возвращает коллекцию строк, на которые разбивается исходная строка String. Разбивка осуществляется по указанному сепаратору sep. Например:
Мы здесь разбиваем строку по пробелам. Получаем коллекцию из ФИО. Тот же результат будет и при вызове метода без аргументов, то есть, по умолчанию он разбивает строку по пробелам:
А теперь предположим, перед нами такая задача: получить список цифр, которые записаны через запятую. Причем, после запятой может быть пробел, а может и не быть. Программу можно реализовать так:
мы сначала убираем все пробелы и для полученной строки вызываем split, получаем список цифр.
возвращает строку из объединенных элементов списка, между которыми будет разделитель String. Например:
получаем строку «1, 2, 3, 4, 5, 6». Или так, изначально была строка:
и мы хотим здесь вместо пробелов поставить запятые:
Теперь fio2 ссылается на строку с запятыми «Иванов,Иван,Иванович».
удаляет пробелы и переносы строк в начале и конце строки. Например:
возвращает строку «hello world». Аналогичные методы:
String.rtrip() и String.ltrip()
удаляют пробелы и переносы строк только справа и только слева.
Вот такие методы строк существуют в Python. Для наглядности ниже они представлены в таблице:
Задания для самоподготовки
1. Написать программу корректности ввода телефонного номера по шаблону:
где x – любая цифра от 0 до 9. Данные представлены в виде строки.
2. Написать программу изменения строки
на строку, в которой все «+» заменены на «-» и удалены все пробелы
в котором все строки выровнены по правому краю (подсказка: воспользуйтесь методом rjust).
4. В строке «abrakadabra» найдите все индексы подстроки «ra» и выведите их (индексы) в консоль.
Видео по теме
#1. Первое знакомство с Python Установка на компьютер
#2. Варианты исполнения команд. Переходим в PyCharm
#3. Переменные, оператор присваивания, функции type и id
#4. Числовые типы, арифметические операции
#5. Математические функции и работа с модулем math
#6. Функции print() и input(). Преобразование строк в числа int() и float()
#7. Логический тип bool. Операторы сравнения и операторы and, or, not
#8. Введение в строки. Базовые операции над строками
#9. Знакомство с индексами и срезами строк
#10. Основные методы строк
#11. Спецсимволы, экранирование символов, row-строки
#12. Форматирование строк: метод format и F-строки
#14. Срезы списков и сравнение списков
#15. Основные методы списков
#16. Вложенные списки, многомерные списки
#17. Условный оператор if. Конструкция if-else
#18. Вложенные условия и множественный выбор. Конструкция if-elif-else
#19. Тернарный условный оператор. Вложенное тернарное условие
#20. Оператор цикла while
#21. Операторы циклов break, continue и else
#22. Оператор цикла for. Функция range()
#23. Примеры работы оператора цикла for. Функция enumerate()
#24. Итератор и итерируемые объекты. Функции iter() и next()
#25. Вложенные циклы. Примеры задач с вложенными циклами
#26. Треугольник Паскаля как пример работы вложенных циклов
#27. Генераторы списков (List comprehensions)
#28. Вложенные генераторы списков
#29. Введение в словари (dict). Базовые операции над словарями
#30. Методы словаря, перебор элементов словаря в цикле
#31. Кортежи (tuple) и их методы
#32. Множества (set) и их методы
#33. Операции над множествами, сравнение множеств
#34. Генераторы множеств и генераторы словарей
#35. Функции: первое знакомство, определение def и их вызов
#36. Оператор return в функциях. Функциональное программирование
#37. Алгоритм Евклида для нахождения НОД
#38. Именованные аргументы. Фактические и формальные параметры
#39. Функции с произвольным числом параметров *args и **kwargs
#40. Операторы * и ** для упаковки и распаковки коллекций
#41. Рекурсивные функции
#42. Анонимные (lambda) функции
#43. Области видимости переменных. Ключевые слова global и nonlocal
#44. Замыкания в Python
#45. Введение в декораторы функций
#46. Декораторы с параметрами. Сохранение свойств декорируемых функций
#47. Импорт стандартных модулей. Команды import и from
#48. Импорт собственных модулей
#49. Установка сторонних модулей (pip install). Пакетная установка
#50. Пакеты (package) в Python. Вложенные пакеты
#51. Функция open. Чтение данных из файла
#52. Исключение FileNotFoundError и менеджер контекста (with) для файлов
#53. Запись данных в файл в текстовом и бинарном режимах
#54. Выражения генераторы
#55. Функция-генератор. Оператор yield
#56. Функция map. Примеры ее использования
#57. Функция filter для отбора значений итерируемых объектов
#58. Функция zip. Примеры использования
#59. Сортировка с помощью метода sort и функции sorted
#60. Аргумент key для сортировки коллекций по ключу
#61. Функции isinstance и type для проверки типов данных
#62. Функции all и any. Примеры их использования
#63. Расширенное представление чисел. Системы счисления
#64. Битовые операции И, ИЛИ, НЕ, XOR. Сдвиговые операторы
#65. Модуль random стандартной библиотеки
© 2021 Частичное или полное копирование информации с данного сайта для распространения на других ресурсах, в том числе и бумажных, строго запрещено. Все тексты и изображения являются собственностью сайта

































































