python - 不同字符串匹配条件的切片列表

标签 python indexing list-comprehension slice

我想根据其元素中可能包含的子字符串对字符串列表进行切片:

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/

相关文章:

python - Django Rest Framework,在url中传递属性

java - 当一个字符紧接着另一个字符重复时,数组索引超出范围(Java)

mysql - 将 MySQL PK 声明为唯一的唯一键

python - 在封闭范围内赋值之前引用变量 p

python - 根据过滤器从python列表中删除元素

python - 使用 pandasplot() 时出现意外振荡

python - 查找长度为 3 的总组合,使得总和可被给定数字整除且 i<j<k

python - 如何使用KV语言在Kivy中制作自定义按钮?

Jquery index() 方法获取子节点的索引

用于 2 个列表字符串格式的 Python 3 单线?