检查一个字符串是否至少包含列表中的两个字符串

时间:2021-02-23 16:33:22

标签: python

我想知道字符串中的列表中是否至少有 2 个单词。列表中有些单词是重复的。我想在列表中的字符串中找到两个不同的 词。

我试过了:

keywords = ["word1", "word1", "word1", "word2", "word3"]
r = "word4 word2 word1 word5"

for keyword in keywords:
    if keyword in r:
        for keyword2 in keywords:
            if keyword2 in r:
                if keyword2 != keyword:
                    status="ok"
                    print("here at least 2 words matching")
                    break

3 个答案:

答案 0 :(得分:4)

如果您将 csv 中的单词放入 set。然后你可以使用'set.intersection()`来查找字符串中所有常见的单词。

keyword_set = set(keywords)
common = keyword_set.intersection(r.split())
if len(common) >= 2:
    print('Found:', common)

Tomerikoo 建议的方法是在找到两个项目后立即中断,并且可以更改为在找到两个相同的单词时停止。但它只打印前两个匹配项,即使还有更多匹配项。这是一个缩短的版本:

# To find only unique words, use `words_found = set()`
words_found = []
for word in set(keywords):
    if word in r:
        # If words_found is a set, use `words_found.add(word)`
        words_found.append(word)
        if len(words_found) >= 2:
            print("Found:", words_found)
            break

答案 1 :(得分:2)

首先转换为 set 以删除重复项。然后在该集合上创建一个迭代器并检查您是否可以匹配所需的单词数量:

keywords = iter(set(keywords))
num_of_words_to_find = 2
words_found = []

for _ in range(num_of_words_to_find-1):
    for word in keywords:
        if word in r:
            words_found.append(word)
            break

for word in keywords:
    if word in r:
        words_found.append(word)
        print(f"Found {num_of_words_to_find} words:", ', '.join(words_found))
        break
else:
    print(f"No {num_of_words_to_find} different words in string")

答案 2 :(得分:0)

在字符串列表中加载csv单词列表,删除重复项,然后针对每个单词

counter = 0
for keyword in wordslist:
    if keyword in r:
        print(keyword + " in string")
        counter = counter + 1

if counter >= 2:
    print("at least two matching words are in the string")