Вы можете переписать is_in_text
, чтобы проверить, что каждое слово в любом списке слов, которые вы хотите проверить, находится в строке:
def is_in_text(text, lista=[]):
isin = True
for word in lista:
isin = isin and (word in text)
return isin
Например,
text_a = 'There are white clouds in the sky'
print(is_in_text(text_a, ['cloud', 'sky']))
возвращаетTrue
, в то время как
text_a = 'There are white clouds in the sky'
print(is_in_text(text_a, ['dog', 'sky']))
возвращает False
Это требует, чтобы вы знали, каким словам вы хотите сопоставить две строки.Если вы хотите проверить все слова в вашей строке, вы можете разбить ее на пробелы.
Например,
text_b = 'There are white clouds in the beautiful sky'
print(is_in_text(text_b, 'clouds in the sky'.split(' ')))
теперь возвращается True
Редактировать:
Итак, я думаю, вам, вероятно, следует переосмыслить то, что вы пытаетесьделать, так как это будет довольно хрупким, но в зависимости от того, что вы описываете, это работает:
def is_in_text(text, lista=[]):
isin = False
for string in lista:
sub_isin = True
for substr in string.split(' '):
sub_isin = sub_isin & (substr in text)
isin = isin or sub_isin
return isin
Например
text_a = 'There are white clouds in the sky'
print(is_in_text(text_a, ['rain', 'cloud sky']))
оценивается как True
в то время как
text_a = 'There are white clouds in the sky'
print(is_in_text(text_a, ['rain', 'dog sky']))
оценивается как False