Программа не будет отображать строку, если она содержит одну строку из списка - PullRequest
0 голосов
/ 10 мая 2018

Я хочу отфильтровать некоторые строки, которые я получаю. Например, у меня есть эта строка:

str = "I just go on Facebook today"

Со списком запрещенных слов, таких как:

banned_words = ["facebook", "Facebook", "Netflix"]

Как я мог сделать что-то вроде: «Если в строке нет ни одного из запрещенных слов», чтобы я мог обработать строку?

При некотором поиске я нахожу функцию any и пытаюсь что-то вроде:

if any(word not in str for word in banned_words):

Но не работает вообще :/

Ответы [ 4 ]

0 голосов
/ 10 мая 2018

Если вы просто хотите узнать, какое слово не входит в вашу строку, попробуйте следующее:

your_str = "I just go on Facebook today"
banned_words = ["facebook", "Facebook", "Netflix"]
[word for word in banned_words if word not in your_str]

И вы должны получить результат, как показано ниже:

['facebook', 'Netflix']

А если вы хотите узнать, какое слово у вас совпадает в вашей строке:

[word for word in banned_words if word in your_str]

[ 'Facebook']

Вы хотите использовать any, чтобы проверить, существует ли он, это не очень хороший способ! надо проверить, что внутри результата! any - это просто средство проверки для bool, поскольку из его названия следует, что any([True, False, False]) вернет False, но здесь вы можете увидеть все, что у нас есть, это string тип. так что как ни старайся, всегда возвращай True.

>>> any(['a', 'b','c'])
True
0 голосов
/ 10 мая 2018

Вы можете использовать in с циклом for

так оно и работает

s = "I just go on Facebook today"

banned_words = ["facebook", "Facebook", "Netflix"]

exist = False
for word in banned_words:

    if (word in s):

        print('banned words "{}" found in str'.format(word))
        exist = True

        break

if (not exist):

    print ('Banned words not found in str')

Выход:

banned words "Facebook" found in str
0 голосов
/ 10 мая 2018

Если у banned_words есть много предметов, Вы можете преобразовать его из list в set. И проверьте, все ли слова в предложении не в banned_words:

banned_words = set(["facebook", "Facebook", "netflix"])

if all(word not in banned_words for word in sentence.split()):
    pass
0 голосов
/ 10 мая 2018

Вы должны использовать следующее

if not any(word  for word in banned_words if word in str):print(1)

Примечание. Никогда не используйте ключевые слова в качестве имен переменных. здесь str является ключевым словом. Итак, я предлагаю вам использовать другое имя переменной

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...