Как найти индекс подстроки в строке python
Перейти к содержимому

Как найти индекс подстроки в строке python

  • автор:

Проверяем наличие подстроки в строке

В этой статье мы расскажем о четырех способах найти подстроку в строке. У каждого способа есть плюсы и минусы — о них мы также кратко поговорим.

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:]

Нарезка с помощью start-index без end-index

  • Нарезка с помощью 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:]

Нарезка с помощью end-index без start-index

  • Нарезка целой строкой

Это поможет вам получить на выходе всю строку.

Синтаксис для нарезки всей подстроки показан ниже:

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 могут принимать любые значения, поддерживаемые механизмом срезов, а значит и отрицательные.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *