Python используя несколько терминов, чтобы найти - PullRequest
0 голосов
/ 24 января 2020

Как мне найти несколько ключевых слов из текстового источника в этом примере? Я хотел бы найти ааа ИЛИ BBB ИЛИ ccc.

if str(textsource).find("aaa") == -1:

Спасибо.

Ответы [ 4 ]

5 голосов
/ 24 января 2020

Используйте регулярное выражение:

import re

if not re.search("aaa|bbb|ccc", str(textsource)):
3 голосов
/ 24 января 2020

Простое использование any() будет работать:

if any(sub in string for sub in subs):

Или, точнее, для вашего случая:

if not any(sub in textsource for sub in ("aaa", "bbb", "ccc")):

Также возможно с all():

if all(sub not in textsource for sub in ("aaa", "bbb", "ccc")):
1 голос
/ 24 января 2020
>>> textsource
'aaabbbccc'

Поиск индекса нескольких поисковых терминов:

>>> [textsource.find(kw) for kw in ["aaa", "bbb", "ccc", "ddd"]]
[0, 3, 6, -1]

Преобразование этих результатов в логические значения, указывающие «найдено» или «не найдено»:

>>> [textsource.find(kw) == -1 for kw in ["aaa", "bbb", "ccc", "ddd"]]
[False, False, False, True]

Возвращение одного логическое значение, указывающее, не был ли найден какой-либо из нескольких поисковых терминов.

>>> any(textsource.find(kw) == -1 for kw in ["aaa", "bbb", "ccc", "ddd"])
True

Для сравнения, вот результат, когда все поисковые термины найдены:

>>> [textsource.find(kw) == -1 for kw in ["aaa", "bbb", "ccc"]]
[False, False, False]
>>> any(textsource.find(kw) == -1 for kw in ["aaa", "bbb", "ccc"])
False
0 голосов
/ 24 января 2020
textsource = 'aaa bbb ccc ddd'
kw_list = ['aaa', 'bbb', 'ccc']
for word in kw_list:
    if textsource.find(word) != -1:
        print('keyword:'+ word + ' found at pos:'+ str(textsource.find(word)))
    else:
        print('keyword:'+ word + ' not found in the textsource')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...