Python для начинающих: Урок 10 — Строки и методы

Этот урок посвящен методам и функциям Python для работы со строками. Метод – специальная процедура, тесно связанная с объектом, к которому она применяется. Методы вызываются с помощью конструкции: объект.метод(). В скобках могут быть аргументы или их может не быть.

Работа с регистром

Рассмотрим часто используемые методы работы с регистром:

  • capitalize(): Переводит первую букву строки в верхний регистр, остальные – в нижний.
string = "hEllo wOrLd"
print(string.capitalize())  # Вывод: Hello world
  • title(): Переводит первую букву каждого слова в верхний регистр, остальные – в нижний. Разделителем слов считается пробел, но метод работает и с другими разделителями.
string = "hEllo*wOrLd"
print(string.title())  # Вывод: Hello*World
  • lower(): Переводит все символы строки в нижний регистр.
string = "Hello World"
print(string.lower())  # Вывод: hello world
  • upper(): Переводит все символы строки в верхний регистр.
string = "Hello World"
print(string.upper())  # Вывод: HELLO WORLD
  • swapcase(): Меняет регистр символов на противоположный (верхний на нижний и наоборот).
string = "Hello World"
print(string.swapcase())  # Вывод: hELLO wORLD

Проверка строк

Группа методов, начинающихся с is, возвращает True или False:

  • isupper(): Проверяет, все ли символы строки записаны в верхнем регистре.
  • islower(): Проверяет, все ли символы строки записаны в нижнем регистре.
  • istitle(): Проверяет, находится ли первый алфавитный символ каждого слова в верхнем регистре, а остальные – в нижнем.
  • isdigit(): Проверяет, являются ли все символы строки цифрами. Полезно для проверки данных перед преобразованием в число.
  • isalpha(): Проверяет, являются ли все символы строки буквами.
  • isalnum(): Проверяет, являются ли все символы строки буквами или цифрами.
string1 = "HELLO"
string2 = "hello world"
string3 = "12345"
string4 = "Hello123"
string5 = "Hello World"

print(string1.isupper()) # True
print(string2.islower()) # False
print(string3.isdigit()) # True
print(string4.isalnum()) # True
print(string5.istitle()) # True

Метод join()

Метод join() склеивает строки из итерируемого объекта (например, списка) с указанным разделителем.

my_list = ["Hello", "World", "Python"]
result = " ".join(my_list)  # Разделитель - пробел
print(result)  # Вывод: Hello World Python

result = "! ".join(my_list) # Разделитель - "! "
print(result) # Вывод: Hello! World! Python

Важно: join() работает только со строковыми значениями.

Метод split()

Метод split() разделяет строку на подстроки по заданному символу (или символам). Возвращает список подстрок. Если разделитель не указан, используется пробел.

string = "Hello World Python"
result = string.split()  # Разделитель - пробел
print(result)  # Вывод: ['Hello', 'World', 'Python']

result = string.split("o") # Разделитель - "o"
print(result) # Вывод: ['Hell', ' W', 'rld Pyth', 'n']

result = string.split("o", 1) # Разделитель - "o", максимальное количество разделений - 1
print(result) # Вывод: ['Hell', ' World Python']

Метод partition()

Метод partition() похож на split(), но возвращает кортеж из трех элементов: часть строки до разделителя, сам разделитель и часть строки после разделителя.

string = "Hello World"
result = string.partition("World")
print(result)  # Вывод: ('Hello ', 'World', '')

Методы strip(), rstrip(), lstrip()

Эти методы удаляют пробелы или другие указанные символы с начала или конца строки:

  • strip(): Удаляет пробелы с начала и конца.
  • rstrip(): Удаляет пробелы с конца.
  • lstrip(): Удаляет пробелы с начала.
string = "   Hello World   "
print(string.strip())  # Вывод: Hello World
print(string.rstrip()) # Вывод:    Hello World
print(string.lstrip()) # Вывод: Hello World   

Можно указывать конкретные символы для удаления:

string = "***Hello World***"
print(string.strip("*")) # Вывод: Hello World

Методы поиска подстроки

  • find(): Возвращает индекс первого вхождения подстроки (слева направо). Возвращает -1, если подстрока не найдена.
  • rfind(): Возвращает индекс последнего вхождения подстроки (справа налево). Возвращает -1, если подстрока не найдена.
  • index(): Аналогично find(), но вызывает исключение ValueError, если подстрока не найдена.
  • rindex(): Аналогично rfind(), но вызывает исключение ValueError, если подстрока не найдена.
string = "Hello World Hello"
print(string.find("Hello")) # 0
print(string.rfind("Hello")) # 13
print(string.index("World")) # 6
#print(string.index("Python")) # ValueError: substring not found

Метод replace()

Метод replace() заменяет все вхождения одной подстроки на другую. Можно указать максимальное количество замен.

string = "Hello World Hello"
print(string.replace("Hello", "Python")) # Python World Python
print(string.replace("Hello", "Python", 1)) # Python World Hello

Метод count()

Метод count() возвращает количество вхождений указанного элемента в строке.

string = "Hello World Hello"
print(string.count("Hello"))  # Вывод: 2

Функция len()

Функция len() возвращает длину строки (количество символов).

string = "Hello World"
print(len(string))  # Вывод: 11

Функция sorted()

Функция sorted() сортирует символы строки по возрастанию (по умолчанию) или убыванию (reverse=True) их кодов в таблице ASCII. Возвращает отсортированный список.

string = "Hello World"
print(sorted(string))  # Вывод: [' ', 'H', 'W', 'd', 'e', 'l', 'l', 'l', 'o', 'o', 'r']
print(sorted(string, reverse=True)) # Вывод: ['r', 'o', 'o', 'l', 'l', 'l', 'e', 'd', 'W', 'H', ' ']

Функции ord() и chr()

  • ord() возвращает код символа в таблице ASCII.
  • chr() возвращает символ по его коду ASCII.
print(ord('A')) # 65
print(chr(65)) # A

Пример: удаление символов с четными индексами

Задача: попросить пользователя ввести строку и удалить из нее символы с четными индексами.

string = input("Введите строку: ")
result = ""
for i in range(len(string)):
    if i % 2 != 0:
        result += string[i]
print(result)

Что будем искать? Например,программа