Модуль: 6.2 Строковый тип данных


6.2.2 Оператор in


Оператор in

В Python есть специальный оператор in, который позволяет проверить, что одна строка находится внутри другой.

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

s = 'https://pygen.ru/'
if 'a' in s:
    print('Введенная строка содержит символ а')
else:
    print('Введенная строка не содержит символ а')

проверяет, содержится ли в переменной s символ 'a', и выводит:

Введенная строка не содержит символ а

Использование вместе с логическими операторами

Мы можем использовать оператор in вместе с логическим оператором not, например:

s = input()
if '.' not in s:
    print('Введенная строка не содержит символа точки')

С помощью оператора in мы можем упростить следующий код, проверяющий, что значение переменной s равно одному из пяти символов 'a', 'e', 'i', 'o', 'u':

if s == 'a' or s == 'e' or s == 'i' or s == 'o' or s == 'u':
    print('YES')

до вида:

if len(s) == 1 and s in 'aeiou':
    print('YES')

С помощью оператора in мы можем проверять наличие сразу нескольких символов в строке.

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

s = 'Sigma'
print('a' in s)
print('z' in s)

выводит:

True
False

Точное вхождение

Оператор in проверяет, содержится ли одна строка в другой строке как точная последовательность символов. В обеих строках символы должны находиться в том же порядке друг относительно друга и не должны быть разделены другими символами, чтобы выражение с оператором in вернуло значение True.

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

print('ab' in 'abc')
print('ac' in 'abc')

выводит:

True
False

Во втором случае выводится False, потому что строка 'abc' не содержит последовательности символов 'ac' (символы 'a' и 'с' идут не подряд, они разделены символом 'b').

Чувствительность к регистру

Проверка с использованием оператора in чувствительна к регистру.

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

s = 'Alpha'
print('p' in s)
print('P' in s)

выводит:

True
False

Примечания

Примечание. Если строка s1 содержится в строке s2, то говорят, что строка s1 является подстрокой для строки s2. Другими словами, оператор in определяет, является ли одна строка подстрокой для другой строки.