在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'
所以现在我有一个功能代码,如果一个子字符串(在子字符串列表中)存在于另一个较长的字符串中,则将 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'