#python #if-statement
Вопрос:
У меня есть строка под названием имя. Меня интересуют случаи, когда имя не содержит ни 'bias'
того, ни 'bn'
другого . Я могу реализовать его, используя два условия, двумя способами следующим образом:
if 'bias' not in name and 'bn' not in name:
pass
Или используя закон Деморгана следующим образом:
if not ('bias' in name or 'bn' in name):
pass
Обратите внимание, что имя содержит больше символов, чем 'bias'
или 'bn'
поэтому мы не можем иметь name not in {'bias', bn'}
в качестве случая с одним условием.
Вопрос: Как мы можем проверить, не содержит ли строка имени 'bias'
ни 'bn'
одного in
или одного условия?
Ответ №1:
Вы можете создать список подстрок для поиска, в основном пройтись по списку и in
проверить, является ли он частью входной строки или нет.
name = 'some name'
to_search = ['bias', 'bn']
found_a_string = False
for item in to_search:
if item in name:
print(item, 'is a part of ', name)
found_a_string = True
if found_a_string:
print("Present")
else:
print("NA")
или
с помощью any
name = 'some name'
to_search = ['bias', 'bn']
if any(x in name for x in to_search):
print("Present")
else:
print("No matches found")
Комментарии:
1. Любое — это то, что вы хотите. @Сепиде
Ответ №2:
Используйте re
с findall
, который возвращает список с совпадениями:
import re
if len(re.findall('bias|bn', name)) == 0:
pass
Ответ №3:
Используя re.search
наряду с пониманием списка, мы можем попробовать:
inp = ["a bias", "a bn", "a bn bias", "other"]
output = ["MATCH" if re.search(r'^(?!.*bias)(?!.*bn)w
Вот объяснение шаблона регулярного выражения:
^ from the start of the input string
(?!.*bias) assert that the substring "bias" appears nowhere
(?!.*bn) assert that the substring "bn" appears nowhere
w then match any word
$ end of the input
Ответ №4:
Попробуйте вот это :
name = 'An string'
if False in [i not in name for i in ['bias', 'bn']]:
print('Yes')
Вы также можете создать функцию, чтобы упростить ее:
def IsTrueName(name):
return False in [i not in name for i in ['bias', 'bn']]
name = 'An string'
if IsTrueName(name):
print('Yes')
, x) else "NO MATCH" for x in inp]
print(output) # ['NO MATCH', 'NO MATCH', 'NO MATCH', 'MATCH']
Вот объяснение шаблона регулярного выражения:
Ответ №4:
Попробуйте вот это :
Вы также можете создать функцию, чтобы упростить ее: