Skip to main content
 首页 » 编程设计

python之查找替代关键字之一的索引

2025年05月04日34Leo_wl

我有一个输入字符串,看起来像:

input_string = "word1 word2 word3 word5 key1 word6 word7"

我必须检查它是否包含给定关键字列表中的一个

关键字 = ['key1', 'key2', 'key3']

并将变量的值设置为字符串中该关键字的索引,否则为 None。例如。在上面的 input_string 中,它将是 4。

我目前的解决方案是这样的:

try: 
    key_index = input_string.split().index(filter(lambda x: x in input_string.split(), keywords).__next__()) 
    return_value = key_index 
except (StopIteration, ValueError): 
    return_value = None 

替代的迭代版本如下所示:

n = 0 
return_value = None 
words = input_string.split() 
for w in words: 
  if w in keywords: 
    return_value = n 
    break 
  else: 
    n += 1 

或者:

return_value = None 
for k in keywords: 
  if k in input_string.split(): 
    try: 
      return_value = input_string.split().index(k) 
    except ValueError: 
      pass 

对于这样一个简单的问题,所有这些解决方案似乎都有些笨拙。我正在寻找更优雅的解决方案,最好是功能性的。只有 python3.x 的解决方案是可以的。

请您参考如下方法:

你可以使用列表理解

>>> [i for i, j  in enumerate(input_string.split()) if j in keywords] 
[4] 
>>> 

你也可以使用index

>>> [input_string.split().index(i) for i in keywords if i in input_string.split()] 
[4]