Как проверить, содержит ли струна подвеску на Python
-
in
операторе для проверки, содержит ли строка подстроку -
метод
str.find()
для проверки, содержит ли строка подстроку -
str.index()
Метод - Решение для проверки подстрок Вывод
Довольно часто возникает необходимость проверить, содержит ли данная строка определенную подстроку. Здесь мы перечислим некоторые методы, а затем сравним производительность по времени выполнения, чтобы выбрать наиболее эффективный метод.
Мы возьмем строку - It is a given string
, так как заданная строка и given
- это подстрока, которую нужно проверить.
in
операторе для проверки, содержит ли строка подстроку
in
операторе - это оператор проверки членства. x in y
оценивается как Истина
, если x
является членом y
, или, другими словами, y
содержит x
.
Это возвращает True
, если строка y
содержит подстроку x
.
>>> `given` in `It is a given string`
True
>>> `gaven` in `It is a given string`
False
in
работе оператора
import timeit
def in_method(given, sub):
return sub in given
print(min(timeit.repeat(lambda: in_method('It is a given string', 'given')))
0.2888628
метод str.find()
для проверки, содержит ли строка подстроку
find
- это встроенный метод string
- str.find(sub)
.
Он возвращает самый низкий индекс в str
, где найдена подстрока sub
, иначе возвращает -1
, если sub
не найден.
>>> givenStr = 'It is a given string'
>>> givenStr.find('given')
8
>>> givenStr.find('gaven')
-1
str.find()
Производительность метода
import timeit
def find_method(given, sub):
return given.find(sub)
print(min(timeit.repeat(lambda: find_method('It is a given string', 'given'))))
0.42845349999999993
str.index()
Метод
str.index(sub)
является string
встроенным методом, который возвращает самый низкий индекс в str
, где sub
находится. Он увеличивает ValueError
, когда подстрока sub
не найдена.
>>> givenStr = 'It is a given string'
>>> givenStr.index('given')
8
>>> givenStr.index('gaven')
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
givenStr.index('gaven')
ValueError: substring not found
str.index()
Производительность метода
import timeit
def find_method(given, sub):
return given.find(sub)
print(min(timeit.repeat(lambda: find_method('It is a given string', 'given'))))
0.457951
Решение для проверки подстрок Вывод
- Оператор
in
- это оператор, который следует использовать для проверки существования подстроки в заданной строке, так как он самый быстрый. str.find()
иstr.index()
также можно было бы использовать, но не оптимально из-за плохой производительности.