Методы и функции строк в Python. Часть 2

Методы и функции строк в Python. Часть 2

В прошлой части мы начали рассказывать, что можно делать со строками. В этой мы продолжим рассказывать какие еще простые манипуляции можно выполнять с текстовой информацией.

Ловите ссылку на первую часть, если еще ее не видели. Итак, приступим...

Поиск, сравнение и анализ

В этом разделе мы собрали самые используемые методы поиска, сравнения и анализа строк ↓

Принадлежность строки

Часто в программах возникает необходимость проверить, является ли одна строка частью другой строки. Для этого в Python есть удобный оператор in. Он возвращает логическое значение True или False:

text = "Hello world!"

print("Hello" in text) # Выведет True
print("Hi" in text) # Выведет False

Оператор in удобно использовать для поиска определенных слов или фраз в строке:

book_title = "Learning Python"
if "Python" in book_title:
    print("This book is about Python")

# Выведет: This book is about Python

* Со списоком книг по Python для начинающих вы можете ознакомиться здесь.

Также оператор in позволяет проверить вхождение символа в строку:

char = "р"
if char in "Привет":
    print(f"Строка содержит {char}")

# Выведет Строка содержит р

Для проверки отсутствия подстроки можно использовать оператор not in:

print("five" not in "twenty one") # Выведет True

Оператор принадлежности строк часто используется в условных конструкциях и циклах при обработке текстовых данных.

Сравнение строк

Для сравнения строк в Python используются те же операторы, что и для других типов данных. Давайте выясним, что проверяет каждый оператор:

  • == — равны ли две строки
  • != — неравны ли две строки
  • > — больше ли одна строка другой
  • < — меньше ли одна строка другой
  • >= — больше ли или равна одна строка другой
  • <= — меньше ли или равна одна строка другой.
Важно: при сравнении строк символы сопоставляются последовательно слева направо. Сравнение выполняется посимвольно на основе кодов символов.
str1 = "abc"
str2 = "cba"

print(str1 < str2) # True
# Это происходит поскольку "a" < "c", так как символ "а" стоит раньше "с" в алфавите

Кроме того, сравнение регистрозависимо. Чтобы сравнить строки без учета регистра, их нужно предварительно привести к одному регистру:

str1 = "Python"
str2 = "python"

print(str1 == str2) # False
print(str1.lower() == str2.lower()) # True

Сравнение строк часто используется для сортировки, фильтрации, поиска одинаковых строк и в других задачах обработки текстовых данных.

Оценка и классификация строк

Python предоставляет удобные инструменты для анализа содержимого строк и их категоризации по определенным критериям. Это позволяет эффективно работать с текстовыми данными — проводить валидацию, фильтрацию, группировку. Для этих целей используются различные методы строк:

  • isalpha() проверяет, состоит ли строка только из букв
str1 = "67 яблок в корзине"
str2 = "много яблок в корзине"
str3 = "многояблоквкорзине"

print(str1.isalpha()) 
# Выведет: False

print(str2.isalpha()) 
# Обратите внимание, что выведет тоже False, так как существуют пробелы в предложении

print(str3.isalpha()) # Выведет: True
  • isdecimal() проверяет, что строка содержит только символы десятичных цифр от 0 до 9
str1 = "67 яблок в корзине"
str2 = "67"
str3 = "67.123"
str4 = "2²"

print(str1.isdecimal()) # Выведет: False
print(str2.isdecimal()) # Выведет: True
print(str3.isdecimal()) # Выведет: False
print(str4.isdecimal()) # Выведет: False
  • isdigit() проверяет наличие в строке только цифр
str1 = "67 яблок в корзине"
str2 = "67"
str3 = "67.123"
str4 = "2²"
print(str1.isdigit()) # Выведет: False
print(str2.isdigit()) # Выведет: True
print(str3.isdigit()) # Выведет: False
print(str4.isdigit()) # Выведет: True

Помимо обычных арабских цифр (0-9), метод isdigit() также вернёт True для некоторых других символов, представленных в стандартах Unicode.

  • isspace() возвращает истину, если в строке только пробельные символы
str1 = "   "
str2 = "яблоки и орехи"

print(str1.isspace()) # Выведет: True
print(str2.isspace()) # Выведет: False
  • istitle() возвращает истину, если каждое словое начинается с большой буквы
str1 = "Data Science"
str2 = "Data science"
str3 = "Data 20"
str4 = "@ Science"

print(str1.istitle()) # Выведет: True
print(str2.istitle()) # Выведет: False
print(str3.istitle()) # Выведет: True
print(str4.istitle()) # Выведет: True
# Обратите внимание, что использование цифр и спецсимволов тоже дает результат True 
  • islower() проверяет, что все символы в нижнем регистре
str1 = "я люблю программировать"
str2 = "Я люблю программировать"

print(str1.islower()) # Выведет: True
print(str2.islower()) # Вывдет: False
  • isupper() проверяет, что все символы в верхнем регистре
str1 = "Я ЛЮБЛЮ ПРОГРАММИРОВАТЬ"
str2 = "Я люблю программировать"

print(str1.isupper()) # Выведет: True
print(str2.isupper()) # Вывдет: False

Определение длины строки

Длина строки — это количество символов, которое содержится в строке. В Python для определения длины строки используется встроенная функция len(). Для использования функции len() нужно передать в нее в качестве аргумента строку, длину которой хотим узнать:

length = len(my_string)

Обратите внимание, что функция len():

  • Вернет целочисленное значение — количество символов в строке
  • Подсчитывает абсолютно все символы в строке, включая пробелы, знаки препинания и специальные символы.
paragraph = "Этот абзац содержит разное количество символов и слов. Функция len() подсчитает их точное число."

print(len(paragraph)) # 96

Зачем нужна функция len()? — чтобы проверить, не превышает ли введенная пользователем строка максимально допустимую длину. Или чтобы разбить длинную строку на части заданного размера.

Работа с подстроками

Python предоставляет ряд методов для поиска и замены подстрок внутри строки. Они могут использоваться для извлечения нужных фрагментов текста, статистического анализа и обработки.

Поиск, подсчет и замена символов в строках

  • find() — ищет подстроку в строке и возвращает индекс первого вхождения или -1, если не найдено
str = "Я хочу выучиться на Data Scientist в Эльбрус Буткемп. Эльбрус Буткемп мне очень нравится."
print(str.find("Эльбрус Буткемп")) # Выведет: 37
print(str.find("JavaScript")) # Выведет: -1
  • rfind() — работает как find(), но возвращает индекс последнего вхождения подстроки
str = "Я хочу выучиться на Data Scientist в Эльбрус Буткемп. Эльбрус Буткемп мне очень нравится."
print(str.rfind("Эльбрус Буткемп")) # Выведет: 54
  • index() — аналогичен find(), но генерирует исключение ValueError, если подстрока не найдена
str = "Я хочу выучиться на Data Scientist в Эльбрус Буткемп. Эльбрус Буткемп мне очень нравится."
print(str.index("JavaScript"))

# Выведет ошибку: ValueError: substring not found

Таким образом, если вы хотите обработать случай, когда подстрока может не быть найдена, и не вызывать исключение, лучше использовать find(). Если же вы хотите, чтобы программа остановилась с ошибкой, если подстрока не найдена, используйте index().

  • rindex() — аналогичен rfind(), но генерирует исключение, если подстрока не найдена
  • count() — возвращает количество вхождений подстроки в строке
str = "Я хочу выучиться на Data Scientist в Эльбрус Буткемп. Эльбрус Буткемп мне очень нравится."
print(str.count("Эльбрус Буткемп"))# Выведет: 2
  • replace() — заменяет одну подстроку на другую и возвращает новую строку.
str = "Я хочу выучиться на Data Scientist в Эльбрус Буткемп. Эльбрус Буткемп мне очень нравится."
print(str.replace("Data Scientist", "веб-разработчика"))
# Выведет: Я хочу выучиться на веб-разработчика в Эльбрус Буткемп. Эльбрус Буткемп мне очень нравится.

Эти методы часто используются совместно для решения задач анализа текста и извлечения из него нужных данных.

Софья Пирогова

Софья Пирогова

Главный редактор / Автор статей