我想根据其元素中可能包含的子字符串对字符串列表进行切片:
l = ['Some long text', 'often begins', ' with ',
'impenetrable fog ', 'which ends', ' somewhere further']
startIndex = [u for u, v in enumerate(l) if 'begins' in v)][0]
finalIndex = [u for u, v in enumerate(l) if 'ends' in v)][0]
这样我就能得到:
' '.join(l[startIndex:finalIndex]) == 'often begins with impenetrable fog'
我的主要问题是用于获取索引的开始和结束条件不同,并且应该是可变的(如上所述的基本子字符串包含,正则表达式或其他可能的方法)。
可能需要删除第一个和最后一个元素,但我想这是将索引调整 1 的问题。
我的代码在理想情况下可以工作,但经常会失败,因为 l
的结构和内容不太可预测。如果缺少一个或两个元素匹配条件,最终字符串应为 None
。
推导式是否相关,或者映射 lambda 函数以应用这两个条件?
最佳答案
尝试:
l = ['Some long text', 'often begins', 'with', 'impenetrable fog', 'which ends', 'somewhere further']
"""
return the index of the phase in 'phases' if phase contains 'word'
if not found, return 'default'
"""
def index(phases, word, default):
for i, s in enumerate(phases):
if word in s: return i
return default
startIndex = index(l, "long", -1)
finalIndex = index(l, "somewhere", len(l))
print(' '.join(l[startIndex+1:finalIndex]))
关于python - 不同字符串匹配条件的切片列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39141251/