Статья Автор: Александр Ф. Алейников

9.4 Методы строк. Часть 2

Поиск и замена

Методы поиска и замены строк внутри других строк.

Каждый метод в этой группе поддерживает необязательные аргументы <start> и <end>. Как и в строковых срезах действие метода ограничено частью исходной строки, начинающейся с позиции символа <start> и продолжающейся вплоть до позиции символа <end>, но не включающей ее. Если параметр <start> указан, а параметр <end> нет, то метод применяется к части исходной строки от <start> до конца строки. Если параметры не заданы, то подразумевается, что <start> = 0, <end> = len(s).

Метод count()

Метод count(<sub>, <start>, <end>) считает количество непересекающихся вхождений подстроки <sub> в исходную строку s.

Приведённый ниже код:

s = 'foo goo moo'
print(s.count('oo'))
print(s.count('oo', 0, 8))  # подсчет с 0 по 7 символ

выводит:

3
2

Метод startswith()

Метод startswith(<suffix>, <start>, <end>) определяет, начинается ли исходная строка s подстрокой <suffix>. Если исходная строка начинается с подстроки <suffix>, метод возвращает значение True, а если нет, то значение False.

Приведённый ниже код:

s = 'foobar'
print(s.startswith('foo'))
print(s.startswith('baz'))

выводит:

True
False

Метод endswith()

Метод endswith(<suffix>, <start>, <end>) определяет, оканчивается ли исходная строка s подстрокой <suffix>. Метод возвращает значение True, если исходная строка оканчивается на подстроку <suffix>, или False в противном случае.

Приведённый ниже код:

s = 'foobar'
print(s.endswith('bar'))
print(s.endswith('baz'))

выводит:

True
False

Методы find(), rfind()

Метод find(<sub>, <start>, <end>) находит индекс первого вхождения подстроки <sub> в исходной строке s. Если строка s не содержит подстроки <sub>, то метод возвращает значение -1. Мы можем использовать данный метод наравне с оператором in для проверки: содержит ли заданная строка некоторую подстроку или нет.

Приведённый ниже код:

s = 'foo bar foo baz foo qux'
print(s.find('foo'))
print(s.find('bar'))
print(s.find('qu'))
print(s.find('python'))

выводит:

0
4
20
-1

Метод rfind(<sub>, <start>, <end>) идентичен методу find(<sub>, <start>, <end>), за тем исключением, что он ищет первое вхождение подстроки <sub>, начиная с конца строки s.

Методы index(), rindex()

Метод index(<sub>, <start>, <end>) идентичен методу find(<sub>, <start>, <end>), за тем исключением, что он вызывает ошибку ValueError: substring not found во время выполнения программы, если подстрока <sub> не найдена.

Метод rindex(<sub>, <start>, <end>) идентичен методу index(<sub>, <start>, <end>), за тем исключением, что он ищет первое вхождение подстроки <sub>, начиная с конца строки s.

Методы find() и rfind() являются более безопасными чем index() и rindex(), так как не приводят к возникновению ошибки во время выполнения программы.

Метод strip()

Метод strip() возвращает копию строки s, у которой удалены все пробелы, стоящие в начале и конце строки.

Приведённый ниже код:

s = '     foo bar foo baz foo qux      '
print(s.strip())

выводит:

foo bar foo baz foo qux

Метод lstrip()

Метод lstrip() возвращает копию строки s, у которой удалены все пробелы, стоящие в начале строки.

Приведённый ниже код:

s = '     foo bar foo baz foo qux      '
print(s.lstrip())

выводит:

foo bar foo baz foo qux⎵ ⎵ ⎵ ⎵ ⎵ ⎵

Метод rstrip()

Метод rstrip() возвращает копию строки s, у которой удалены все пробелы, стоящие в конце строки.

Приведённый ниже код:

s = '      foo bar foo baz foo qux      '
print(s.rstrip())

выводит:

⎵ ⎵ ⎵ ⎵ ⎵ ⎵foo bar foo baz foo qux

Методы strip(), lstrip(), rstrip() могут принимать на вход опциональный аргумент <chars>. Необязательный аргумент <chars> – это строка, которая определяет набор символов для удаления.

Метод replace()

Метод replace(<old>, <new>) возвращает копию s со всеми вхождениями подстроки <old>, замененными на <new>.

Приведённый ниже код:

s = 'foo bar foo baz foo qux'
print(s.replace('foo', 'grault'))

выводит:

grault bar grault baz grault qux

Метод replace() может принимать опциональный третий аргумент <count>, который определяет количество замен.

Приведённый ниже код:

s = 'foo bar foo baz foo qux'
print(s.replace('foo', 'grault', 2))

выводит:

grault bar grault baz foo qux
Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать