>>> x.rfind("ss")
5
Метод rfnd также может получать один или два необязательных аргумента, смысл которых аналогичен аргументам fnd .
Методы index и rindex идентичны fnd и rfnd соответственно, кроме одного раз-личия: если index или rindex не могут найти вхождение подстроки в строке , метод не возвращает –1 , а инициирует исключение ValueError . О том, что именно это означает, вы поймете после прочтения главы 14.
Метод count используется по тем же принципам, что и четыре предыдущие функ-ции, но он возвращает количество неперекрывающихся вхождений заданной под -строки в строке :
>>> x = "Mississippi"
>>> x.count("ss")
2
Для поиска в строках также могут использоваться еще два метода: startswith и endswith . Эти методы возвращают результат True или False в зависимости от того, начинается ли (или заканчивается) строка, для которой они вызываются, одной из строк, переданных в параметрах:
>>> x = "Mississippi"
>>> x.startswith("Miss")
True
>>> x.startswith("Mist")
False
>>> x.endswith("pi")
True
>>> x.endswith("p")
Методы startswith и endswith позволяет искать более одной строки одновремен-но. Если параметр представляет собой кортеж строк, то оба метода проверяют все строки в кортеже и возвращают True , если будет найдена хотя бы одна из них: >>> x.endswith(("i", "u"))
True
Методы startswith и endswith хорошо подходят для простого поиска, когда вы уверены в том, что именно ищется в начале или конце строки.
БЫСТРАЯ.ПРОВЕРКА:.ПОИСК.В.СТРОКАХ
Допустим, вы хотите проверить, завершается ли строка подстрокой "rejected" . Какой строковый метод вы для этого используете? Можно ли добиться того же результата другими способами?
6.4.5. Изменение строк
Строки являются неизменяемыми, но объекты строк поддерживают ряд методов, которые возвращают новую строку — модифицированную версию исходной строки. Такой результат, по сути, приводит к тому же результату, что и прямое изменение. За полным описанием этих методов обращайтесь к документации. Метод replace может использоваться для замены вхождений подстроки substring (первого аргумента) другой строкой newstring (второй аргумент). Этот метод также получает необязательный третий аргумент (за подробностями обращайтесь к документации):
>>> x = "Mississippi"
>>> x.replace("ss", "+++")
'Mi+++i+++ippi'
Как и в случае с функциями поиска, модуль re предоставляет гораздо более мощные средства замены подстрок.
Функции string.maketrans и string.translate могут использоваться для преоб-разования символов в строках другими символами. Эти функции используются относительно редко, но в этих отдельных случаях они могут упростить вам жизнь. Предположим, вы работаете над программой, которая преобразует строковые вы-ражения с одного компьютерного языка на другой. В первом языке для обозначения логического отрицания используется оператор ~ , а в другом оператор ! ; в первом языке для обозначения операции «логическое ИЛИ» используется оператор ^ , а во втором & ; в первом языке используются круглые скобки ( и ) , а во втором — квадратные скобки [ и ] . В заданном строковом выражении необходимо заменить все вхождения ~ на ! , все вхождения ^ на & , все вхождения ( на [ , и все вхождения ) на ] . Это можно сделать многократными вызовами replace , но проще и эффективнее действовать иначе: >>> x = "~x ^ (y % z)"
>>> table = x.maketrans("~^()", "!&[]")
>>> x.translate(table)
'!x & [y % z]'
Во второй строке метод maketrans создает таблицу преобразования по двум своим строковым аргументам. Два аргумента должны содержать одинаковое количество символов, а таблица устроена так, что для n -го символа первого аргумента она воз-вращает n -й символ второго аргумента.
Таблица, созданная вызовом maketrans , передается методу translate . Затем метод translate перебирает все символы своего объекта строки и проверяет, присутствуют ли они в таблице, заданной вторым аргументом. Если символ встречается в таблице преобразования, translate заменяет этот символ соответствующим преобразован-ным символом для получения преобразованной строки. При вызове translate также можно передать необязательный аргумент с симво-лами, которые должны быть удалены из строки. За подробностями обращайтесь к документации.
Другие функции модуля string решают более специализированные задачи. Метод string.lower преобразует все алфавитные символы строки к нижнему регистру, а метод upper решает обратную задачу. capitalize преобразует к верхнему регистру первый символ строки, а title делает это со всеми словами в строке. swapcase пре-образует символы нижнего регистра одной строки к верхнему, а символы верхнего регистра к нижнему. expandtabs удаляет символы табуляции в строке, заменяя каждую табуляцию заданным количеством пробелов. ljust , rjust и center допол-няют строку пробелами для ее выравнивания в поле определенной ширины. zfll дополняет числовую строку нулями слева. За подробной информацией обо всех этих методах обращайтесь к документации.
Читать дальше