Проверьте, появляется ли какая-либо из строк списка в большей строке - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть список строк. Я хотел бы проверить, появляется ли какая-либо из строк этого списка в документе большего размера, сохраненном в строке var.

Я знаю, что это легко сделать с помощью цикла, но я буду выполнять эту операцию очень много раз (и еще один цикл, кроме этого), поэтому мне было интересно, есть ли более эффективный способ сделать это вместо for цикл.

Мой подход такой:

main_words = ... # List of words I want to check
tweet = ... # String containing the text I want to check for word appearance

for word in main_words:
    if word in tweet:
        .......

1 Ответ

2 голосов
/ 04 апреля 2019

Вы можете использовать наборы, чтобы получить эту информацию:

text = """I have a list of strings. I would like to check if any of the strings of 
that list appears on a bigger document saved on a string var.

I know this can easily be done with a loop, but I will be doing this operation so 
many times (and another loops apart of this) so I was wondering if there is any
more efficient way to do it instead of a for loop."""

words = set(["would","this","do","if","supercalifragelisticexpialigetic"])

text_words = text.split()

# show all that are in it
print(words.intersection(text_words))   # words & set(text_words)
# show all that are not in it
print(words.difference(text_words))     # words - set(text_words)

Выход:

set(['this', 'do', 'would', 'if'])               # words & set(text_words)
set(['supercalifragelisticexpialigetic'])        # words - set(text_words)

Чтобы получить счет также:

from collections import Counter

counted = Counter(text_words)

for w in words:
    print(w, counted.get(w))

Выход:

do 1
would 1
supercalifragelisticexpialigetic None
if 2
this 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...