Python: Сравнение элементов списка на уровне подстрок

#python #python-3.x #list

Вопрос:

Я пытаюсь сравнить две или более строк в списке. Ввод, то, что было опробовано, вывод, полученный с использованием метода, опробованного против ожидаемого.

Ввод:

 lis = [ 'concat(tb1.col1, tb1.col2, tb1.col3) as alias1, tb1.col4, case when tb2.col2gt;1 then 1 else 0',  'concat(tb1.col1, tb1.col2, tb1.col3) as alias1, concat(tb2.col1, tb2.col2, tb2.col3) as alias2, case when tb1.col1gt;1 then 1 else 0, tb3.col1' ]  

Что пробовали:

 for c in range(len(lis)-1):  print(list(set(lis[c 1].split(', ')) - set(lis[c].split(', '))))  

Полученный результат:

 ['tb3.col1', 'tb2.col2',  'concat(tb2.col1', 'tb2.col3) as alias2',  'case when tb1.col1gt;1 then 1 else 0 end as alias4']  

Ожидаемый результат:

 ['concat(tb1.col1, tb1.col2, tb1.col3) as alias1',  'tb1.col4', 'case when tb2.col2gt;1 then 1 else 0 end as alias3', 'concat(tb2.col1, tb2.col2, tb2.col3) as alias2',  'case when tb1.col1gt;1 then 1 else 0 end as alias4',  'tb3.col1']  

Пожалуйста, помогите мне!

Комментарии:

1. Вы просто пытаетесь разделить элементы в списке на запятые?

2. нет, все не так просто. Разделение на основе запятой приведет к дальнейшему разделению concat(tb1.col1, tb1.col2, tb1.col3) as alias1 , в то время как нам это нужно как один элемент.