Найти первый из многих элементов в python - text.find (a, b, c) - PullRequest
1 голос
/ 16 января 2012

Я хочу проверить, находится ли одно из слов в «а» внутри «текста»

text = "testing if this works"
a = ['asd' , 'test']
print text.find(a)

как я могу это сделать?

спасибо

Ответы [ 3 ]

5 голосов
/ 16 января 2012

Если вы хотите проверить, есть ли какое-либо из слов в a в тексте, используйте, ну, any:

any(word in text  for word in a)

Если вы хотите знатьколичество слов в a, встречающихся в тексте, вы можете просто add их:

print('Number of words in a that match text: %s' %
      sum(word in text  for word in a))

Если вы хотите сопоставлять только полные слова (т.е. вы не хотитечтобы сопоставить test слово testing), разбейте текст на слова, например:

words = set(text.split())
any(word in words  for word in a)
1 голос
/ 16 января 2012

Регулярные выражения могут использоваться для поиска нескольких шаблонов совпадений за один проход:

>>> import re
>>> a = ['asd' , 'test']
>>> regex = re.compile('|'.join(map(re.escape, sorted(a, key=len, reverse=True))))

>>> print bool(regex.search(text))       # determine whether there are any matches
True
>>> print regex.findall(text)            # extract all matching text
['test']
>>> regex.search(text).start()           # find the position of the first match
0
1 голос
/ 16 января 2012
In [20]: wordset = set(text.split())

In [21]: any(w in wordset for w in a)
Out[21]: False
...