Как удалить строку содержащую определенное слово
Хочу составит адресную книжку, и не могу разобраться с функцией удаление. По задумке человек должен написать имя на английском, а программа ищет строку в которой это находится и удаляет. Строка с "Имя" выглядит таким образом :
print("Для удаления контакта введите имя контакта, которого необходимо удалить: ")
nam = input("Введите имя: ")
Я только начинаю и еще много чего не понимаю, поэтому обращаюсь сюда весь код :
from __future__ import print_function
import re
from colorama import init
from colorama import Fore, Back, Style
import io
import pickle
init()
print( Back.GREEN )
print( Fore.BLACK )
print("Адреса из Книги:")
f = open('Adress Book.txt')
for line in f.readlines():
print (line)
print( Back.BLACK )
print( Fore.WHITE )
running = True
while running:
print("Найти или Добавить контакт?")
what = str(input("Введите действиe:") )
if what == "Добавить":
print("Для добавления нового контакта введите Информацию о нем:")
name = input( "Имя Контакта: " )
surname = input( "Фамилия: " )
gos = input("Страна Проживания: ")
adr = input( "Адрес Эл.Почты: " )
ph = input("Номер Телефона: ")
print("Вы добавили контакт " + name + " " + surname + " В свою адресную книжку")
my_filename=str("Adress Book")
fext2='txt'
with open(my_filename + '.' + fext2, 'a', encoding='utf-8') as fp:
print(name,surname,gos, adr,ph, file=fp, sep=" | ")
fp.close()# закрытие файла
if what == "Найти":
print("Для поиска данных о контакте введите имя + фамилию требуемого вам контакта: ")
nam = input("Введите имя + фамилию: ")
nam = nam.replace(" ", " | ")
print("Все данные на имя " + nam)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
word = nam
with io.open('Adress Book.txt', encoding='utf-8') as file:
for line in file:
if word in line:
print(line, end='')
if what == "Удалить":
print("Для поиска данных о контакте введите имя + фамилию требуемого вам контакта: ")
nam = input("Введите имя + фамилию: ")
nam = nam.replace(" ", " | ")
running = True
так выглядит фрагмент из файла Adress Book.txt:
Nikita | Fedotov | Russia | [email protected] | +79533435645
Aleksey | Aleksandrov | Russia | [email protected] | +7955343664
Ответы (2 шт):
Автор решения: Victor VosMottor
→ Ссылка
your_string = "..."
banned_word = '***'
your_string = '\n'.join(i for i in your_string.split('\n') if banned_word not in your_string)
Автор решения: S. Nick
→ Ссылка
Я добавил для вас некоторые строки, проверьте:
#from __future__ import print_function
#import re
from colorama import init
from colorama import Fore, Back, Style
#import io
#import pickle
init()
print("Адреса из Книги:")
print(Back.GREEN, Fore.BLACK)
#f = open('Adress Book.txt')
#for line in f.readlines():
# print(line)
# readlines - считывает из файла все строки в список и возвращает его.
with open('Adress Book.txt') as f: # +++
my_lines = f.readlines() # +++
print(*my_lines, sep='\n')
print(Back.BLACK, Fore.WHITE)
#running = True
print("Найти или Добавить контакт?")
while True: # running:
# what = str(input("Введите действиe:") )
what = input("\nВведите действиe (Добавить, Найти, Удалить или Enter-выход): ")
if what == "Добавить":
print("Для добавления нового контакта введите Информацию о нем:")
name = input( "Имя: " )
surname = input( "Фамилия: " )
gos = input("Страна Проживания: ")
adr = input( "Адрес Эл.Почты: " )
ph = input("Номер Телефона: ")
# print("Вы добавили контакт " + name + " " + surname + " В свою адресную книжку")
my_filename = str("Adress Book")
fext2 = 'txt'
with open(my_filename + '.' + fext2, 'a', encoding='utf-8') as fp:
print(name, surname, gos, adr, ph, file=fp, sep=" | ")
# fp.close()# закрытие файла происходит автоматичкский
print(Back.GREEN, Fore.BLACK)
print(f"Вы добавили контакт в адресную енигу: {name}, {surname}, {gos}, {adr}, {ph}")
print(Back.BLACK, Fore.WHITE)
# if what == "Найти":
elif what == "Найти":
print("Для поиска данных о контакте введите имя + фамилию требуемого вам контакта: ")
nam = input("Введите: <имя> <фамилию> ")
nam = nam.replace(" ", " | ")
print("Все данные на имя: " + nam)
word = nam
with open('Adress Book.txt', encoding='utf-8') as file:
print(Back.GREEN, Fore.BLACK)
for line in file:
if word in line:
print(line, end='')
print(Back.BLACK, Fore.WHITE)
# if what == "Удалить":
elif what == "Удалить":
print("Для поиска данных для удаления введите <имя> <фамилию>: ")
nam = input("<имя> <фамилию>: ")
word = nam.replace(" ", " | ")
print("Вы хотите удвлить данные на имя: " + word)
with open('Adress Book.txt', encoding='utf-8') as file:
print(Back.GREEN, Fore.BLACK)
for line in file:
if word in line:
print(line, end='')
print(Back.BLACK, Fore.WHITE)
nam = input("Y или y - да хочу, любой другой ввод - нет не хочу: ")
if nam == "Y" or nam == "y":
print("Y или y - да хочу")
my_lines = []
with open('Adress Book.txt') as f:
for line in f.readlines():
if not word in line:
my_lines.append(line) # = f.readlines()
with open('Adress Book.txt', 'w', encoding='utf-8') as f:
for line in my_lines:
f.write(line)
# running = True
elif what == "":
break
else:
print("Вы не правильно ввели действиe, повторите или нажмите Enter")