Этот урок посвящен методам и функциям 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)