Проверяем наличие подстроки в строке
В этой статье мы расскажем о четырех способах найти подстроку в строке. У каждого способа есть плюсы и минусы — о них мы также кратко поговорим.
1) Оператор in
Простейший способ проверить наличие подстроки в строке — оператор in . Он используется для проверки наличия элемента в какой-либо структуре данных. Этот оператор возвращает булево значение — True или False . Пример:
fullstring = "pythonist" substring = "python" if substring in fullstring: print "Подстрока найдена!" else: print "Подстрока не найдена!"
Этот оператор — сокращенный вызов метода __contains__ . Он подходит и для проверки наличия элемента в списке.
2) Метод String.index()
Тип string имеет метод index . Он возвращает наименьший индекс, по которому обнаруживается начало подстроки в строке. Если подстрока не найдена, то возбуждается исключение ValueError . Реализовать его можно с помощью блока try-except-else.
fullstring = "pythonist" substring = "python" try: fullstring.index(substring) except ValueError: print "Подстрока не найдена!" else: print "Подстрока найдена!"
Этот метод может особенно пригодиться, если вам нужно найти индекс подстроки, а не просто узнать о ее существовании.
3) Метод String.find()
Тип string имеет еще один метод — find . Он удобнее, чем index , потому что благодаря ему нам не нужно думать об обработке ошибок. Если метод не находит подстроку в строке, он возвращает -1 . В случае успеха он возвращает наименьший индекс, по которому обнаруживается подстрока.
fullstring = "pythonist" substring = "python" if fullstring.find(substring) != -1: print "Подстрока найдена!" else: print "Подстрока не найдена!"
Если вы не хотите обрабатывать ошибки — отдайте предпочтение этому методу, а не index .
4) Регулярные выражения (REGEX)
Регулярные выражения — более гибкий способ нахождения подстрок в строках. В Python есть встроенный модуль, позволяющий работать с регулярными выражениями, — re . Модуль re содержит функцию search , которая позволит вам найти подстроку:
from re import search fullstring = "pythonist" substring = "python" if search(substring, fullstring): print "Подстрока найдена!" else: print "Подстрока не найдена!"
Если вам нужны сложные сопоставления, например, учет регистра — этот метод подойдет вам лучше всего. Но у него есть и недостатки: сложность и скорость работы. То есть, в простеньких задачах его лучше не использовать.
Что такое функция find в Python?
Метод find() используется для поиска в строке. В качестве обязательного аргумента принимает строку, которую нужно найти. Метод возвращает индекс символа, с которого начинается искомая строка. Если строка не найдена, метод вернет -1 .
txt = 'Hello, welcome to my world.' x = txt.find('welcome') print(x) # => 7
В качестве необязательных аргументов метод также принимает начало (с какого индекса начать поиск, по умолчанию это 0 — начало строки), а также конец (на каком индексе закончить поиск строки, по умолчанию поиск проводится по всей строке).
Подстрока в строке Python – поиск вхождения и наличия
В этом уроке мы рассмотрим подстроку в строке python и то, как она работает, ее поиск в самых простых примерах.
Определение строки
«Строка представляет собой последовательность из нескольких кодовых символов. Строка включает число или набор символов, которые могут включать буквенно-цифровые и специальные символы соответственно».
Буквально, обособляя символы кавычками, мы можем построить строку. Одинарные кавычки обрабатываются Python так же, как двойные кавычки. Построить строки так же легко, как присвоить значение переменной.
Variable1 = "Hello Python" Variable2 = "Welcome to the world of Python"
Предопределенные строковые методы
Здесь мы обсудим некоторые методы, которые используются для управления строками в Python. Они представлены в таблице ниже.
| Метод | Описание | |
|---|---|---|
| 1. | Center() | Возвращается заполненная пробелами строка с входной строкой, расположенной по всей ширине столбцов. |
| 2. | Count() | Если указаны начало списка и конец индекса остановки, он используется для подсчета количества раз, когда ‘str’ встречается в последовательности или в подстроке строки. |
| 3. | Capitalize() | Этот метод используется для заглавной буквы в строке. |
| 4. | endswith() | Определяет, заканчивается ли строка или подстрока строки суффиксом(если предлагается начало списка и конец индекса остановки); возвращает истину, а если нет, то неверно. |
| 5. | encode() | Этот метод возвращает зашифрованное представление строки; если появляется ошибка, ValueError возникает по умолчанию до тех пор, пока ошибки не будут указаны как «игнорировать» или «заменить». |
| 6. | decode() | Этот метод позволит вам использовать кодек, авторизованный для шифрования, для расшифровки строки. Расширенная кодировка для стандартной кодировки строк. |
| 7. | expandtabs() | Он используется для расширения строковых разделов на несколько пробелов; если разделы не указаны по умолчанию, необходимо 8 пробелов на раздел. |
| 8. | find() | Этот метод определяет, находится ли str в строке или подстроке, если возвращаются начало и конец индекса, если индекс является числовым, и -1 в противном случае. |
| 9. | index() | Метод index() работает так же, как и метод find(), но если str не идентифицирован, он создает исключение. |
| 10. | isalpha() | Если в последовательности есть хотя бы 1 буква, и все буквы являются алфавитными или ложными, она возвращает истину. |
| 11. | isalnum() | Этот метод возвращает истину, если последовательность включает хотя бы одну букву и все буквы являются буквенно-цифровыми и ложными. |
| 12. | islower() | Этот метод используется для возврата истины, если строка содержит только одну букву, а все буквы в регистре находятся в нижнем регистре; в противном случае возвращается false. |
| 13. | isdigit() | Он используется для возврата истины, если какая-либо последовательность имеет цифры, в противном случае – ложь. |
| 14. | istitle() | Метод Istitle() возвращает истину, если последовательность соответствует «titlecase», в противном случае возвращает ложь. |
| 15. | isnumeric() | Он используется для возврата действительного, если в последовательности Unicode есть только числовые символы, в противном случае возвращает false. |
| 16. | isspace() | Если в строке есть только пробелы, этот метод возвращает true, в противном случае – false. |
| 17. | isupper() | Если строка содержит хотя бы одну букву в регистре, а все буквы в заглавной форме, метод isupper() становится истинным, в противном случае он становится ложным. |
| 18. | len() | Метод len() помогает найти размер или длину строки. |
| 19. | join() | Эта функция объединяет изображения элементов в последовательности в строку с разделителем строк. |
| 20. | maketrans() | Метод позволит вам вернуть диаграмму преобразования для используемой операции преобразования. |
| 21. | lower() | Поможет преобразовать все символы верхнего регистра строки в нижний регистр. |
| 22. | ljust() | Этот метод будет использоваться для выделения последовательности, заполненной пробелами, до максимальной ширины столбца с выравниванием начальной строки по левому краю. |
| 23. | istrip() | Поможет удалить все пробелы в конечной строке. |
| 24. | replace() | Он используется для замены всех существующих проявлений в строке новыми проявлениями или, если указан максимум, максимумом проявлений. |
| 25. | max() | Этот метод используется для возврата максимального количества букв алфавита из последовательности str. |
| 26. | min() | Используется для возврата минимального количества букв алфавита из последовательности str. |
| 27. | rjust() | Поможет вернуть последовательность, заполненную пробелами, до максимальной ширины столбца, при этом исходная строка будет выровнена по правому краю. |
| 28. | rfind() | Работа метода rfind() аналогична работе метода find(), но он ищет в обратной строке. |
| 29. | rindex() | Работа функции rindex() аналогична функции index(), но она ищет обратную строку. |
| 30. | strip() | Этот метод используется для выполнения функций методов rstrip() и lstrip(). |
| 31. | startswith() | Он используется для определения того, начинается ли последовательность или последовательность подстроки с str(если предоставлены начальный индекс begin и завершающий конец индекса); возвращает истину, если это так, и ложь, если нет. |
| 32. | split() | Используется для разделения последовательности на подстроку str(хранилище, если не указано) и возвращает массив подстрок; если указан, разделен на максимальное количество подстрок. |
| 33. | spilitlines() | Он будет использоваться для разделения строки на все NEWLINE(или num) и возвращает список каждой строки с удаленными NEWLINE. |
| 34. | translate() | Используется для преобразования строк в соответствии со строкой str(256 символов) в таблице преобразования, исключая строки из серии del. |
| 35. | swapcase() | Метод swapcase() используется для изменения условия для всех букв последовательности. |
| 36. | заглавие() | Он используется для возврата версии описания строки, т. е. все термины начинаются в верхнем регистре, а остаток – в нижнем регистре. |
| 37. | isdecimal() | Он используется для возврата true, если в последовательности Unicode есть только десятичные знаки, и false вместо этого. |
| 38. | zfill() | Этот метод поможет вернуть исходную последовательность нулей с заполнением слева до максимальной ширины букв; zfill() сохраняет любую указанную подпись для цифр(меньше нуля). |
| 39. | upper() | Поможет преобразовать все строчные символы строки в прописные. |
| 40. | rstrip() | Он используется для удаления всех пробелов в предыдущей последовательности. |
Что такое подстрока в Python?
Подстрока в Python – это последовательный сегмент символов в строке. Другими словами: «часть строки является подстрокой. Строка Python определяет несколько методов построения подстроки, проверки, включает ли строка подстроку, индекс подстроки и т. д.»
Например, подстрока «the better of» – «It was the better of times». А, «Itwastimes» – это серия «It was the better of times», а не подстрока.
- Создание подстроки
Мы можем построить подстроку с помощью нарезки строки. Мы должны использовать метод split() для создания массива подстрок на основе указанного разделителя.
Синтаксис создания строки в Python приведен ниже:
S = 'Welcome to the python world' name = s[10:] // substring creation with the help of slice print[name] A1 = s.split() Print(A1) // Array of substring with the help of split() method
Здесь индекс начинается с 0.
>>> s = 'Welcome to the python world' >>> s[10:] 'python' >>> s.split() ['Welcome', 'to', 'the', 'python', 'world'] >>>
После успешного выполнения кода мы получили то, что видим ниже на экране.

- Проверяем, нашли ли мы подстроку
Мы можем использовать метод find() или оператор in, чтобы оценить, доступна ли подстрока в последовательности или нет.
s = 'Welcome to the python world' if 'Name' in s: // Checking substring with the help of in operator print('Substring found') if s.find('Name') != -1: // Checking substring with the help of find() print('Substring found')
Здесь метод find() возвращает индекс позиции подстроки, если он совпадает, иначе он вернет -1.
>>> s = 'Welcome to the python world' >>> >>> if 'name' in s: Print('Substring found') . Substring found >>> >>> if s.find('name') ! = -1: Print('Substring found') . Substring found >>>
- Проверка наличия подстроки
Мы можем определить количество итераций подстроки в массиве с помощью метода count().
Синтаксис проверки наличия подстроки:
s = ' Welcome to the python world ' print('Substring count =', s.count('c')) s = 'Python is a best language' print('Substring count =', s.count('Py'))
>>> s = ' Welcome to the python world ' >>> print('Substring count =', s.count('c')) >>> s = 'Python is a best language' >>> print('Substring count =', s.count('Py')) >>>
После выполнения вышеуказанного кода мы получили следующий результат:

- Поиск всех индексов в подстроке
В языке Python нет встроенной функции для получения массива всех значений индекса подстроки. В конце концов, используя метод find(), мы можем просто добиться этого.
Синтаксис поиска всех индексов подстроки приведен ниже:
def find_all_indexes(input_str, substring): s = 'Python is the best programming language' print(find_all_indexes(s, 'Py'))
>>> def find_all_indexes(input_str, substring): ? L2 = [] ? length = Len(input_str) ? index = 0 ? while index < Length: ? i = input_str.find(substring, index) ? if i == -1: ? return L2 ? L2.append(i) ? index = i + 1 ? return L2 ? >>> s = ' Python is the best programming language ' >>> print(find_all_indexes(s, 'Py'))
После успешного выполнения вышеуказанного программного кода мы получили следующий результат:

- Нарезка с помощью start-index без end-index
Это возвращает нарезанную строку, начиная с позиции 5 массива до последней из последовательности Python.
s = s[ startIndex : ]
// Substring or slicing with the help of start index without end index >>> s = 'It is to demonstrate substring functionality in python.' >>> s [5:]

- Нарезка с помощью end-index без start-index
Это возвращает нарезанную строку от начала до конца index-1.
s = s[ : endIndex ]
// Substring or slicing with the help of end index without start index >>> s = 'Python is a powerful programming language' >>> s [7:]

- Нарезка целой строкой
Это поможет вам получить на выходе всю строку.
Синтаксис для нарезки всей подстроки показан ниже:
s = s[ : ]
// Substring or slicing of complete string >>> s = 'Python is a robust programming language.' >>> s [ : ]

- Вырезание одного символа из строки
Это возвращает один символ подстроки из строки.
Синтаксис для выделения одного символа из строки показан ниже:
s = s[ index ]
// Substring or slicing of a single character >>> s = 'Python is a widely used language.' >>> s [ 12 ]
После успешного выполнения вышеуказанного кода мы получили следующий результат:

- Переворот строки с помощью отрицательного(-) шага
Это поможет вам вернуть строку в обратном порядке.
s = s[ : : negative value ]
// Reversing of a string with the help of Substring or slicing through negative step >>> s = 'Python language supports the string concept.' >>> s [ : : -1 ]
После успешного выполнения вышеуказанного программного кода мы получили следующий результат:

Работа отрицательного индекса
Работоспособность отрицательного индекса продемонстрирована в таблице ниже.
| P | Y | Т | H | О | N |
| 0 | 1 | 2 | 3 | 4 | 5 |
| -5 | -4 | -3 | -2 | -1 | -0 |
Здесь, в приведенной выше таблице, мы используем слово Python, чтобы продемонстрировать точно работающую функциональность отрицательного индекса.
- Нарезка строки с помощью отрицательного(-) индекса
Используется для нарезки или подстроки строки с помощью отрицательного индекса. Индекс последовательности начинается с 0 до 5, и мы также будем использовать отрицательный индекс.
Синтаксис для нарезки строки с помощью отрицательного индекса показан ниже:
s = s[ 0 : negative value ]
// Substring or slicing of a string through a negative index >>> s = 'PYTHON' >>> s [ 0 : -4 ]
После успешного выполнения вышеуказанного программного кода мы получили следующий результат:

- Нарезка строки с помощью положительного(+) индекса
Используется для нарезки или подстроки строки с помощью положительного индекса.
s = s[ 0 : positive value ]
// Substring or slicing of a string through a positive index >>> s = 'PYTHON' >>> s [ 0 : -2 ]

- Получение всей подстроки с помощью понимания списка
Возвращает полные подстроки строки с помощью нарезки строки и понимания списка.
// Using slicing and list comprehension of string's substring >>> s = 'PYTHON' >>> str = [s[ i : j] ] for i in range(Len(s)) for j in range(i + 1, Len(s) + 1) print(str)

- Получение всей подстроки с помощью метода itertools.combination()
Возвращает полные подстроки строки с помощью нарезки строки и понимания списка.
// Using slicing and itertools.combination() of string's substring >>> s = 'PYTHON' >>> str = [s[ i : j] ] for i in range(Len(s)) for j in range(i + 1, Len(s) + 1) print(str)
string.find
s — Строка, для которой следует отыскать индекс подстроки.
sub — Подстрока, начальный индекс размещения которой требуется определить.
start=0 — Индекс начала среза в исходной строке, в котором требуется отыскать подстроку.
end=None — Индекс конца среза в исходной строке, в котором требуется отыскать подстроку.
import string
my_str = 'barbarian'
string.find(my_str, 'bar') # 0
string.find(my_str, 'bar', 1) # 3
string.find(my_str, 'bar', 1, 2) # -1
Если подстрока не найдена, возвращает -1 .
Функция должна использоваться только в случае необходимости найти индекс начала подстроки. Для обычного определение вхождения подстроки используйте оператор in : ‘bar’ in ‘barbarian’ # True .
Необязательные параметры start и end могут принимать любые значения, поддерживаемые механизмом срезов, а значит и отрицательные.