У меня есть два списка. Элементы в первом списке соответствуют элементам во втором списке. Я хочу объединить все элементы в listA, которые имеют 'name' как последовательные теги, и отразить изменения в listB.
пример ввода:
listA = ['my','name','is','dumbledore',',','albus','dumbledore','.','they','call','me','albus','percival','wulfric','brian','dumbledore','.']
listB = ['x','x','x,'name','x','name','name','x','x','x','x','name','name','name','name','name','x']
ожидаемый результат:
listA = ['my','name','is','dumbledore',',','albus_dumbledore','.','they','call','me','albus_percival_wulfric_brian_dumbledore','.']
listB = ['x','x','x','name','x','name','x','x','x','x','name','x']
Пока что вот что у меня есть:
prev_a = None
prev_b = None
i=-1
for a, b in zip(listA, listB):
i += 1
places = 0
if b == 'name':
if prev_b == b:
prev_a = prev_a + '_' + a
del listB[i]
listA[i-1] = prev_a
del listA[i]
prev_a = a
prev_b = b
print(listA)
print(listB)
Вывод, который я получаю:
['my', 'name', 'is', 'dumbledore', ',', 'albus_dumbledore', '.', 'they', 'call', 'me', 'albus_percival', 'percival_brian', 'dumbledore', '.']
['x', 'x', 'x', 'name', 'x', 'name', 'x', 'x', 'x', 'x', 'name', 'name', 'name', 'x']
Это не правильно. Как я могу обобщить это для работы с именами длиннее 2 слов, не зная заранее длину имени?