def has_id_en(elem):
    return elem.get('id', '').startswith('en')

def segment(sequence, is_head):
    current = []
for x in sequence:
    if is_head(x):
        if current:
            yield current
current = []
current.append(x)
if current:
    yield current
text_list = [' '.join(e.text for e in bunch) for bunch in segment(line_list,
    has_id_en)]
Объединять элементы в списке, пока не будет найден элемент, содержащий определенный текст?