如果仅在列表中找到匹配的字符串,如何打印数据?

How to print data if only matching string found in list?

key_word = ["apple","Apple","Boy","boy"]

title1 = "Where the boy"
title2 = "The Boy playing cricket"
title3 =  "hello world"
title4 = "I want to buy apple vinegar"

我试过了,但没有打印出来:

if title1 in key_word:
   print(title1)
key_word = ["apple","Apple","Boy","boy"]

title1 = "Where the boy"
title2 = "The Boy playing cricket"
title3 =  "hello world"
title4 = "I want to buy apple vinegar"

for word in key_word:
    if word in title1:
        print(title1)

如果要检查所有标题,请将它们放入列表中:

key_word = ["apple","Apple","Boy","boy"]

titles = [
    "Where the boy",
    "The Boy playing cricket",
    "hello world",
    "I want to buy apple vinegar",
]

for word in key_word:
    for title in titles:
        if word in title:
            print(title)

你必须检查你的关键字是否在标题中,而不是相反。

key_words = ["apple", "boy"]
titles = [
    "Where the boy", 
    "The Boy playing cricket", 
    "hello world", 
    "I want to buy apple vinegar"
]

for title in titles:
    for key_word in key_words:
        if key_word.lower() in title.lower():
            print(title)
            break

对于每个标题,对于每个关键字,检查关键字的小写版本是否在标题的小写版本中 - 如果是,则打印标题并停止遍历关键字(这就是 break 确实如此)。

这将从 I want to buy apple vinegar 开始,然后检查 apple 是否在标题中 - 它是,然后打印它。对于下一个条目,The Boy playing cricket,我们检查 apple 是否在列表中,它不在 - 所以我们继续下一个词,boy - 它在列表中.

我删除了您重复的条目,因为 lower 使它们变得多余。

我还将您的标题更改为列表 - 而不是 title1title2 等。这样就可以浏览列表而不必指定每个变量名称,让您可以轻松扩展以后要检查的标题集。

另一个小细节是,这只检查字母是否以相同的顺序出现;它不检查它们是否构成一个词(因此包含“apples”的标题会匹配,包含“tomboy”的标题也会匹配)。您可以通过先使用 .split() 将您的标题拆分为单词来解决此问题,然后检查您的关键字是否在该列表中。

另一个选项是使用正则表达式,但这是一种更高级的技术 - 当您有更多经验时,可以考虑稍后再做。

看起来好像您想打印包含任何关键字的任何标题。

首先遍历标题。

然后:

key_word = ["apple","Apple","Boy","boy"]

title1 = "Where the boy"
title2 = "The Boy playing cricket"
title3 =  "hello world"
title4 = "I want to buy apple vinegar"

for title in title1, title2, title3, title4:
    if any(kw in title for kw in key_word):
        print(title)

输出:

Where the boy
The Boy playing cricket
I want to buy apple vinegar