Объединить строки в цикле

Есть такие вот входные данные

 arr =  ['(e)','','апрапрапв','','(f)',' ','текст7',' ','(g)',' ','текст3;',' ','(h)',' ','текст','еще текст','','(i)', '(u)']

Как можно привести их в такой вид

 arr =  ['(e) апрапрапв',' ','(f) текст7',' ','(g) текст3;','','(h) текст еще текст',' ','(i)','(u)']

Ответы (3 шт):

Автор решения: Альберт Чехович

Может так:

arr =  ['(e)',' ','апрапрапв',' ','(f)',' ','текст7',' ','(g)',' ','текст3;',' ','(h)',' ','текст','еще текст','','(i)', '(u)']
print('Было',arr)
i=0
while i < len(arr)-1:
    if "(" in arr[i]:
        while not "(" in arr[i+1] and not "(" in arr[i+2] and i<len(arr)-2:
            arr[i]+=arr[i+1]
            del arr[i+1]
    i+=1
print('Стало',arr)

И хотелось бы уточнить - там пробелы или пустые строки в списке? и какой все таки принцип соединений?

→ Ссылка
Автор решения: vadim vaduxa

ну как я понял задачу, и если не думать как сделать "красиво" а решать прямо в лоб

res, _q0, _q1 = [], [], []
for a in arr:
    if a.lstrip():
        if _q1 and a.startswith('(') and a.endswith(')'):
            _q0.append(_q1)
            _q1 = []
        _q1.append(a)
if _q1:
    _q0.append(_q1)

for q in _q0:
    res.append(' '.join(q))
    if len(q) != 1:
        res.append(' ')
if res[-1] == ' ':
    del res[-1]
print(res)
→ Ссылка
Автор решения: CrazyElf

По приколу вот в одну строку, но последний пробел между пунктами мне уже лениво убирать:

arr =  ['(e)','','апрапрапв','','(f)',' ','текст7',' ','(g)',' ','текст3;',' ','(h)',' ','текст','еще текст','','(i)', '(u)']
res = sum([['('+x.strip(), ' '] for x in ' '.join(filter(len, filter(str.strip, arr))).split('(') if len(x)],[])[:-1]
print(res)

Вывод:

['(e) апрапрапв', ' ', '(f) текст7', ' ', '(g) текст3;', ' ', '(h) текст еще текст', ' ', '(i)', ' ', '(u)']
→ Ссылка