【问题标题】:How to print out the one keyword that was matched by method any(keyword in string)?如何打印出方法any(字符串中的关键字)匹配的一个关键字?
【发布时间】:2022-01-24 15:35:39
【问题描述】:

简单的问题:如何打印出找到的确切关键字并使 any() 变为 True?使用 s 返回索引号或 0,而我需要触发它的确切关键字。

if any(s in source for s in keywords):
    print(...)

source 是一个长字符串(源码)

关键字是一个列表

【问题讨论】:

  • 您需要单独检查每个真值,而不是使用any()
  • 使用for 循环。当条件为真时,打印关键字并跳出循环。
  • 只需使用 for 循环。

标签: python list


【解决方案1】:

您需要手动迭代并在第一次匹配时中断循环

keywords = ["foo", "BaR", "baz"]
source = "there was a fight yesterday. police reported that a fight broken out in a local bar but no one was injured. police have arrested a man named baz"

for k in keywords:
    if k.lower() in source.lower():
        print(k)
        break

输出

BaR

【讨论】:

  • 谢谢,我想我明白了,但我可能不明白。我忘了在 OP 中添加源是一个长字符串(源代码),而关键字显然是一个列表。这有什么改变吗?另外 - 如果列表中有更多源代码,这个带有 break 的解决方案是否会继续迭代相同的字符串,然后是下一个,还是?
  • 因此,如果您用空格分隔,您可以将字符串拆分为单词(我将更新示例。一旦匹配,循环将停止,它不会继续关注第一个匹配跨度>
  • 谢谢,如何让它工作而不用空格分隔?在源代码中,人们可以尝试阻止我正在寻找的关键字,或者我正在寻找从一个常用短语的中间开始,认为他们可能将用户大写/小写作为第一个字母或在它前面加一些符号
  • 啊我明白你的意思了,重构了这个例子,所以它现在不管大小写在源代码中查找关键字
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多