在Python中提取满足any( )语句的子串索引

Extract the index of the substring that satisfied the any( ) statement in Python

所以现在我有一个功能代码,如果一个子字符串(在子字符串列表中)存在于另一个较长的字符串中,则将 1 附加到给定列表。

例如,如果我想确定在棒球比赛中球被击中的位置,我使用以下字符串作为输入:

s = 'SMITH grounded out to 1b.'

我可以简单地使用 any() 函数如下来确定一垒是否参与了比赛:

first = []
first_ids = ['1b', 'first base']

if any(idx in s for idx in first_ids):
        first.append(1)
    else:
        first.append(0)

但是,假设:

s = 'SMITH grounded into double play 1b to ss to p.'

现在,我们遇到了涉及多个职位的情况,我只想包括第一个职位。识别ss(游击手)和p(投手)的过程和1b完全一样。我的想法是通过识别满足 any() 函数的子字符串的索引来简单地找到第一个位置。有简单的方法吗?

我认为最适合你的方法是保留所有职位的列表,拆分数据,然后过滤:

positions = ['1b', '2b', '3b', 'ss', 'p', 'c', 'lf', 'rf', 'cf']

s = 'SMITH grounded into double play 1b to ss to p.'

string_positions = [i for i in s.strip('.').split() if i in positions]

print string_positions

print string_positions[0]

输出:

['1b', 'ss', 'p']

'1b'