Как удалить повторяющуюся подстроку из списка строк?

#python #list

Вопрос:

Я хотел бы удалить повторяющуюся подстроку из списка строк. *Предполагая, что повторяющаяся подстрока отличается для каждого списка.

Пример:

lst = ['State your favorite fruit: Apple', 'State your favorite fruit: Orange', 'State your favorite fruit: Grapes']

Желаемый результат:

final_lst = ['Apple', 'Orange', 'Grapes']

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

 lst1 = ['This is a bag', 'This is a cat', 'This is a dog']
lst2 = ['Favorite drink: Cola', 'Favorite drink: Sprite']
lst3 = ['My name is James', 'My name is Mary Jane', 'My name is Lopez']
 

Желаемый результат:

 final_lst1 = ['bag', 'cat', 'dog']
final_lst2 = ['Cola', 'Sprite']
final_lst3 = ['James', 'Mary Jane', 'Lopez'] 
 

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

1. Лучший способ сформулировать это может заключаться в том, чтобы сказать, что вы хотите извлечь все названия фруктов. Какова здесь точная постановка проблемы?

2. Знаете ли вы заранее повторяющуюся подстроку, например, определена ли она в переменной? Или это должно быть обнаружено из элементов списка?

3. @MichaelButscher Привет, повторяющаяся подстрока должна быть обнаружена в элементах списка. Спасибо!

4. Всегда ли общая строка является началом строки?

Ответ №1:

Возможно, есть некоторые другие способы сделать это, но этот, приведенный ниже, отлично подходит для этой цели

Итак, ваш список выглядит следующим образом:

 lst = ['State your favorite fruit: Apple', 'State your favorite fruit: Orange', 'State your favorite fruit: Grapes']
 

Теперь разделите все слова в новом списке

 seperate_words = (" ".join(lst)).split(" ") #First we join all the sentences of the list
# with a space in between using the "join" method of string.
#Then consequently splitting the list by a space
 

Наконец, чтобы получить уникальные слова, используйте понимание списка, как показано ниже

 unique_words = [word for word in seperate_words if seperate_words.count(word) == 1]

print(unique_words) 
 

Вывод:[«Яблоко», «Апельсин», «Виноград»]

С уважением

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

1. Здесь вы можете выделить уникальные слова для любого заданного списка, т. Е. Для списка, в котором повторяющаяся подстрока отличается для каждого списка.

Ответ №2:

Это решение поставленного вопроса:

 final_lst = [s.replace('State your favorite fruit: ') for s in lst]
 

Ответ №3:

Просто используйте понимание списка:

 lst = ['State your favorite fruit: Apple', 'State your favorite fruit: Orange', 'State your favorite fruit: Grapes']

final_lst = [s.replace('State your favorite fruit: ', '') for s in lst]

print(final_lst)
 

Выход:

 ['Apple', 'Cherry', 'Grapes']
 

Ответ №4:

вы можете разделить на «:» и получить последний индекс, как показано ниже:

 [x.split(":")[-1] for x in lst]
 

Ответ №5:

Вы можете выполнить итерацию по списку, а затем взять последнее слово из каждой строки:

 final_lst = [w.split(" ")[-1] for w in lst]