У Python есть метод подстроки «содержит»?



Answers

Если это просто поиск подстроки, вы можете использовать string.find("substring") .

Вы должны быть немного осторожны с find , index и, хотя, как и подстроками. Другими словами, это:

s = "This be a string"
if s.find("is") == -1:
    print "No 'is' here!"
else:
    print "Found 'is' in the string."

Он напечатает Found 'is' in the string. Аналогично, if "is" in s: будет оцениваться True . Это может быть или не быть тем, что вы хотите.

Question

Я ищу метод string.contains или string.indexof в Python.

Я хочу делать:

if not somestring.contains("blah"):
   continue



По-видимому, нет ничего подобного для векторного сравнения. Очевидным способом Python для этого было бы:

names = ['bob', 'john', 'mike']
any(st in 'bob and john' for st in names) 
>> True

any(st in 'mary and jane' for st in names) 
>> False



В принципе, вы хотите найти подстроку в строке в python. Существует два способа поиска подстроки в строке в Python.

Способ 1: in операторе

Вы можете использовать оператор Python для проверки подстроки. Это довольно просто и интуитивно понятно. Он вернет True если подстрока была найдена в строке else False .

>>> "King" in "King's landing"
True

>>> "Jon Snow" in "King's landing"
False

Метод 2: метод str.find()

Второй метод - использовать метод str.find() . Здесь мы вызываем метод .find() в строке, в которой должна быть найдена подстрока. Мы передаем подстроку методу find () и проверяем его возвращаемое значение. Если его значение отличается от -1, подстрока была найдена в строке, в противном случае - нет. Возвращаемое значение - это индекс, в котором была найдена подстрока.

>>> some_string = "valar morghulis"

>>> some_string.find("morghulis")
6

>>> some_string.find("dohaeris")
-1

Я бы рекомендовал вам использовать первый метод, поскольку он более Pythonic и интуитивно понятен.




В Python есть два простых способа достижения этого:

Путь Pythonic: использование Python's in in Keyword-

in принимает два «аргумента», один слева ( подстрока ) и один справа, и возвращает « True если левый аргумент содержится внутри аргумента прав, а если нет, он возвращает False .

example_string = "This is an example string"
substring = "example"
print(substring in example_string)

Вывод:

True

Непитонический путь: использование str.find на Python:

Метод find возвращает позицию строки в строке или -1, если она не найдена. Но просто проверьте, нет ли позиции -1.

if example_string.find(substring) != -1:
    print('Substring found!')
else:
    print('Substring not found!')

Вывод:

Substring found!



Если вы ищете поиск без учета регистра целых слов, а не подстроку, содержащуюся в другом слове:

s = 'This is my text example'
if 'is' not in (w.lower() for w in s.split(string.punctuation + string.whitespace)):
     # do something



Нет, никакого string.contains(str) , но есть оператор in :

if substring in someString:
    print "It's there!!!"

Вот более сложный рабочий пример:

# Print all files with dot in home directory
import commands
(st, output) = commands.getstatusoutput('ls -a ~')
print [f for f in output.split('\n') if '.' in f ]



Related