Как из строки удалить подстроку?

Есть строка:

str = 'Hello, my name Bil' \
      '\nHello, my name Tim' \
      '\nHello, my name Mila' \
      '\nHello, my name Den' \
      '\nHello, my name Loki'

Как удалить из этой строки подстроку, где содержится определенное имя? Например, name = 'Mila'? и чтобы ptint вывел:

Hello, my name Bil
Hello, my name Tim
Hello, my name Den
Hello, my name Loki

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

Автор решения: Dmitry

Смотря что нужно в результате, если просто print

str = 'Hello, my name Bil' \
      '\nHello, my name Tim' \
      '\nHello, my name Mila' \
      '\nHello, my name Den' \
      '\nHello, my name Loki'

name = "Bil"

for i in str.split("\n"): 
  if not name in i:
    print(i)

вывод будет

Hello, my name Tim
Hello, my name Mila
Hello, my name Den
Hello, my name Loki

Вообще split() метод создаст вот такой лист

['Hello, my name Bil', 'Hello, my name Tim', 'Hello, my name Mila', 'Hello, my name Den', 'Hello, my name Loki']

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

UPD для входного значения со списком. Решение не оптимальное, но будет легко понимаемое для ТС.

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

l = str.split("\n")
names = ['Bil', 'Tim']
indexes =[]

Теперь пробежимся для каждого элемента списка и найдем встречаются ли имена в из списка names, если да, то сохраним индексы для списка l

for i in l: 
  for n in names:
    if n in i:
      indexes.append(l.index(i))

Теперь посмотри, что у нас хранит переменная indexes

>>> indexes
[0, 1]

то есть нулевой и первый элементы не должны выводится. Можно скопировать в итоговый лист

res = []
for i in range(0, len(l)):   
  if i not in indexes:       
    res.append(l[i])

посмотрим, что содержит res

>>> res
['Hello, my name Mila', 'Hello, my name Den', 'Hello, my name Loki']

Манипуляции с индексами можно опустить и сразу обрабатывать/копировать. Здесь это больше для ясности

→ Ссылка