Функции, основанные на поиске и замене подстроки в строке
Содержание
- 1. Функция str.count(). Количество вхождений подстроки в заданном диапазоне
- 2. Функция str.find(). Поиск подстроки в строке
- 3. Функция str.index(). Поиск подстроки в строке с генерированием исключения
- 4. Функция str.rfind(). Найти наибольший индекс вхождения подстроки в строку
- 5. Функция str.rindex(). Найти наибольший индекс вхождения подстроки в строку с генерированием исключения ValueError
- 6. Функция str.replace(). Замена подстроки в строке
- Связанные темы
Поиск на других ресурсах:
1. Функция str.count(). Количество вхождений подстроки в заданном диапазоне
Функция str.count() возвращает количество вхождений подстроки в заданном диапазоне. Согласно документации Python общая форма использования функции следующая
n = str.count(substring[, start[, end]])
где
- n – результат, количество вхождений подстроки substring в строке str, которые не перекрываются;
- str – исходная строка;
- substring – подстрока, которая может входить в строку str;
- start, end – соответственно начальная и конечная позиции (индексы) в строке str, определяющие диапазон который принимается ко вниманию (рассматривается). Иными словами значения start, end определяют срез.
Пример.
# Функция str.count() - количество вхождений подстроки в заданном диапазоне # 1. Вызов функции с указанием диапазона s1 = 'abcdef' # исходная строка n = s1.count('bcd', 0, len(s1)) # n = 1, диапазон 0..5 n = 'ab ab babab'.count('ab', 2, 10) # n = 2 n = 'ab ab babab'.count('ab', 0, 6) # n = 2 # 2. Вызов функции без указания диапазона s1 = 'Hello world!' n = s1.count('о') # n = 2, количество символов 'о' в строке s1 = 'abcbcd abcd' n = s1.count("bc") # n = 3 # 3. Вызов функции с указанием начального значения start s1 = 'abc abc abcd' n = s1.count('abc', 3) # n = 2
⇑
2. Функция str.find(). Поиск подстроки в строке
Функция find() предназначена для поиска подстроки в строке. В соответствии с документацией Python общая форма вызова функции следующая:
index = s.find(sub [, start[, end]])
где
- index – целочисленное значение, которое есть индексом первого вхождения подстроки sub в строке s. Если подстрока sub не найдена в строке s, то index=-1;
- s – строка, в которой осуществляется поиск подстроки sub;
- start, end – позиции в строке s. Эти позиции определяют границы среза s[start:end], определяющего обрабатываемый диапазон. Если не задавать параметры start, end, то поиск осуществляется во всей строке.
Пример.
# Функция str.find() - поиск подстроки в строке # Исходная строка, в которой осуществляется поиск s = 'abcde fg hijkl mnop' # 1. Обработка целой строки index = s.find('hij') # index = 9 index = s.find('+-=') # index = -1 # 2. Обработка среза s[start:end] # берется ко вниманию часть 'abcde' строки s index = s.find('hij', 0, 5) # index = -1 index = s.find('cde', 0, 5) # index = 2 index = 'hello world!'.find('wor', 2, len(s)) # index = 6
⇑
3. Функция str.index(). Поиск подстроки в строке с генерированием исключения
Функция str.index() осуществляет поиск подстроки в строке. Данная функция работает так же как и функция str.find(), однако, если подстрока не найдена, то вызывается исключение ValueError.
Согласно документации Python общая форма вызова функции следующая:
pos = str.index(substring [, start [, end]])
где
- pos – позиция подстроки substring в строке str в случае, если строка найдена. Если подстрока не найдена, то вызывается исключение ValueError;
- str – строка, в которой осуществляется поиск;
- start, end – соответственно начальная и конечная позиции в строке str, определяющие диапазон поиска.
Пример.
# Функция str.index() - поиск подстроки в строке # Случай 1. Генерируется исключение ValueError: substring not found #t = str.index('sdf', 'abcdef def hj') - исключительная ситуация # Случай 2. Подстрока существует в строке s = 'abcdef' t = s.index('bc') # t = 1 - позиция найденной подстроки # Поиск в заданном диапазоне s = 'abc def ghi def' t = s.index('def', 0, len(s)) # t = 4 # Поиск в диапазоне '012' s = '0123456789' t = s.index('012', 0, 3) # t = 0
⇑
4. Функция str.rfind(). Найти наибольший индекс вхождения подстроки в строку
Функция str.rfind() возвращает наибольшую позицию (индекс) в строке заданной подстроки, если таковая найдена. Общая форма использования функции следующая:
position = str.rfind(subs[, start[, end]])
где
- position – искомая позиция (индекс) вхождения подстроки subs в строке str. Если подстрока subs в строке str не найдена, то position=-1;
- str – строка, в которой осуществляется поиск подстроки subs;
- subs – заданная подстрока;
- start, end – соответственно начальный и конечный индексы, определяющие срез в строке str.
Пример.
# Функция str.rfind() # 1. Использование без указания диапазона s1 = 'abc def ab abc' index = s1.rfind('ab') # index = 11 index = s1.rfind('jkl') # index = -1 # 2. Использование с указанием начала start s1 = '012 345 012' index = s1.rfind('01', 3) # index = 8 # 3. Использование с указанием начала start и конца end s1 = 'abc def abc def gh' s2 = 'bc' # подстрока index = s1.rfind(s2, 0, len(s1)) # index = 9 index = s1.rfind(s2, 0, 1) # index = -1, подстрока не найдена
⇑
5. Функция str.rindex(). Найти наибольший индекс вхождения подстроки в строку с генерированием исключения ValueError
Функция str.rindex() работает также как и функция rfind(), то есть возвращает наибольшую позицию подстроки в строке. Разница между rindex() и rfind() состоит в следующем: если подстрока не найдена в строке, то генерируется исключение ValueError.
Общая форма использования функции следующая:
position = str.rindex(subs[, start[, end]])
где
- position – искомая позиция (индекс) вхождения подстроки subs в строке str. Если подстрока subs в строке str не найдена, генерируется исключение ValueError;
- str – строка, в которой осуществляется поиск подстроки subs;
- subs – заданная подстрока;
- start, end – соответственно начальный и конечный индексы, определяющие срез в строке str.
Пример.
# Функция str.index() # 1. Использование без указания диапазона s1 = 'abc def ab abc' index = s1.rindex('ab') # index = 11 index = str.rindex(s1, ' ') # index = 10, символ пробел на 10-й позиции # 2. Использование с указанием начала start s1 = '012 345 012' index = s1.rindex('01', 3) # index = 8 # 3. Использование с указанием начала start и конца end s1 = 'abc def abc def gh' s2 = 'bc' # подстрока index = s1.rindex(s2, 0, len(s1)) # index = 9 # Следующий код сгенерирует исключение # ValueError: substring not found index = s1.rindex(s2, 0, 1)
⇑
6. Функция str.replace(). Замена подстроки в строке
Функция str.replace() возвращает копию строки, в который все вхождения подстроки old заменены на new.
Общая форма использования функции
s1 = s2.replace(old, new[, count])
где
- s1 – результирующая строка-копия;
- s2 – строка-оригинал, в которой делаются замены подстроки old на подстроку new;
- old – подстрока, которая может быть заменена другой подстрокой new. Количество символов в подстроке произвольно. Если подстрока old не найдена в строке s2, тогда функция возвращает строку s2 без изменений;
- new – подстрока, заменяющая подстроку old в строке s2;
- count – количество замен которые могут быть осуществлены. Если count не задано, то замены осуществляются во всех возможных вхождениях подстроки old в строке s2.
Пример.
# Функция str.replace() - замена подстроки в строке # 1. Вызов без использования параметра count s1 = 'abcdef' s2 = s1.replace('bc', '111') # s2 = 'a111def' s1 = 'abc abc abc' s2 = s1.replace('bc', '0000') # s2 = 'a0000 a0000 a0000' # Случай, если подстрока в строке не найдена s2 = str.replace(s1, 'jkl', '111') # s2 = 'abcdef' # 2. Вызов с использованием параметра count s1 = 'abcd abcd abcd' s2 = s1.replace('bcd', '+++', 3) # s2 = 'a+++ a+++ a+++' s2 = s1.replace('bcd', '++++', 2) # s2 = 'a++++ a++++ abcd' s2 = s1.replace('ab', '---', 1) # s2 = '---cd abcd abcd' s2 = s1.replace('abcd', '==', 6) # s2 = '== == =='
⇑
Связанные темы
- Функции для работы со строками, определяющие особенности строки
- Функции обрабатывающие и определяющие начало и конец строки
- Функции обработки строки в соответствии с форматом или правилом кодирования. Стили форматирования
⇑