Python 查找备选关键字之一的索引

Python 查找备选关键字之一的索引,python,Python,我有一个输入字符串,如下所示: input\u string=“word1 word2 word3 word5关键字1 word6 word7” 我必须检查它是否包含给定关键字列表中的一个 keywords=['key1','key2','key3'] 并将变量的值设置为字符串中该关键字的索引,否则不设置。例如,在上面的输入字符串中,它将是4 我当前的解决方案如下所示: try: key_index = input_string.split().index(filter(lambda x

我有一个输入字符串,如下所示:

input\u string=“word1 word2 word3 word5关键字1 word6 word7”

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

keywords=['key1','key2','key3']

并将变量的值设置为字符串中该关键字的索引,否则不设置。例如,在上面的
输入字符串中,它将是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
替代的迭代版本如下所示:

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
或:


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

您可以使用列表理解

>>> [i for i, j  in enumerate(input_string.split()) if j in keywords]
[4]
>>>
您也可以使用
索引

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

您可以使用列表理解

>>> [i for i, j  in enumerate(input_string.split()) if j in keywords]
[4]
>>>
您也可以使用
索引

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

这将为您提供字符串中键的索引列表:

indexes = [input.index(key) for key in keys if key in input]

这将为您提供字符串中键的索引列表:

indexes = [input.index(key) for key in keys if key in input]

如果您只想要第一个idx:

for idx, value in enumerate(input_string.split()):
    if value in keywords:
        break
else:
    idx = None

else
仅当
for
在不中断
的情况下完成时才会处理
如果您只想要第一个idx:

for idx, value in enumerate(input_string.split()):
    if value in keywords:
        break
else:
    idx = None

else
只有在
for
完成而没有
break

我需要字符串中键的索引时才会被处理。不仅仅是它是否包含关键字。这个答案与我的答案相同。我需要在字符串中有一个键的索引。不仅仅是它是否包含关键字。这个答案和我的一样