У меня есть следующий код:
check = "red" in string_to_explore
Как я могу повторить это для нескольких подстрок?
Я пробовал с:
check = "red|blue" in string_to_explore
но, похоже, не работает.
Заранее спасибо,






Методы Python str не принимают шаблон регулярного выражения, для этого используйте модуль re:
import re
text = "foo foo blue foo"
pattern = re.compile(r"red|blue")
check = bool(pattern.search(text))
print(check) # True
Вы можете использовать понимание списка с любым.
string_to_explore = "red my friend"
strings = "red|blue".split("|")
check = any([x in string_to_explore for x in strings])
print(check)
string_to_explore1 = "blue my friend"
check1 = any([x in string_to_explore1 for x in strings])
print(check1)
string_to_explore2 = "nothing my friend"
check2 = any([x in string_to_explore2 for x in strings])
print(check2)
# True
# True
# False
Понимание списка является ненужным по двум причинам: во-первых, оно вызывает создание списка, который отбрасывается после того, как any с ним покончено; и, во-вторых, это противоречит цели способности any замыкаться при обнаружении True, заставляя вычисляться все элементы понимания.
@pho Да, вы правы, в основном по поводу короткого замыкания. Я думаю, что список с парой значений True/False вообще не имеет веса, но часть короткого замыкания имеет.
Вы можете просто сделать это, используя список, содержащий ваши подстроки, и цикл for, чтобы проверить, присутствуют ли строки в списке. Вот пример кодов:
main_string = "This is a string containing red and blue colors."
substrings = ["red", "blue"]
check = any(substring in main_string for substring in substrings)
print(check)
Список совершенно ненужен, вы можете просто удалить квадратные скобки, это создаст генератор, с которым
anyработает отлично.