#python #keyword-search
#python #ключевое слово-поиск
Вопрос:
Я пытаюсь выполнить поиск по списку слов в другой строке. Я использую приведенный ниже код
>>> word='abc present'
>>> each='abctotech present'
>>> (all(x in each.split() for x in word.split()))
False
В приведенном выше примере я получаю результат как «False», но слово «abc» является начальной частью одного слова в строке, каждое из которых является «abctotech»
Есть ли другой способ, который я могу использовать, чтобы вернуть значение «True» для вышеупомянутого сценария. Пожалуйста, дайте совет.
Комментарии:
1. @hansolo, большое спасибо за ваш ответ, это сработало для данного сценария, но если я изменю строку each на «each =’toabctotech present’ «, результаты по-прежнему выводятся как «True», я хочу выполнить поиск слова, если оно присутствует в начале слов, доступных в другой строке
2. Используйте список в качестве результата для
all
вместо генератора:all([ x in each for x in word.split() ])
3. @hansolo, большое вам спасибо. Ваше предложение работает отлично
Ответ №1:
Вы могли бы проверить, any
что strings
в each
начинается с того, что в words
нравится,
>>> each
'abctotech present'
>>> word
'abc present'
>>> all(any(y.startswith(x) for y in each.split()) for x in word.split())
True
>>> each1
'toabctotech present'
>>> all(any(y.startswith(x) for y in each1.split()) for x in word.split())
False