2016-04-28 2 views
-2

Как я могу удалить ключ и значения ключей из файла txt? Например, если пользователь хочет удалить человек с именем Сара из этого файла:Удалите строку из CSV, где ввод совпадает с столбцом

Joe,Bloggs,[email protected],01269 512355, 1, 0, 0, 0, 
Sarah,Brown,[email protected],01866 522555, 1, 0, 0, 0, 
… 

В настоящее время у меня есть следующий:

L = open("players.txt","r+") 

delete_name1 = raw_input ("Enter the first name of the person you wish to delete: ") 
for line in L: 
    s = line.strip() 
    string = s.split(",") 
    if delete_name1 == string[0]: 
     del string[:8] # Doesn't work 
     print delete_name1 + " has been deleted." 
L.close() # Closes the file to free us usage space. 

код принимается, но это не меняет текстовый файл. Я чувствую, что мне нужно написать обновленную информацию обратно в txt-файл, но я не знаю, как это сделать.

Please select an option: 2 
Enter the first name of the person you wish to delete: Sarah 
Sarah has been deleted 
+1

Этот вопрос является слишком широким. Предоставьте свои текущие попытки и опишите проблемы, с которыми вы столкнулись. –

+0

Добро пожаловать на SO! Посмотрите http://stackoverflow.com/help/how-to-ask. Вы также можете написать образец того, как выглядит текстовый файл. Что вы делали до сих пор и что вы не понимаете? – vmonteco

+0

Сохраните весь файл в некоторой структуре данных, удалите информацию Сары из структуры данных, а затем напишите всю структуру данных обратно в файл. –

ответ

3

Если файл невелик, просто перепишите весь файл. Для текстовых файлов и встроенные функции, это простой способ:

with open(filename) as input_file: 
    data = [] 
    for line in input_file: 
     if not line.startswith("Sarah,Brown"): 
      data.append(line) 

with open(filename, 'w') as output_file: 
    for d in data: 
     output_file.write(d + '\n') 
0

Чтобы изменить файл, вы должны полностью перезаписать файл. Вот небольшой пример:

newFile = [] 
with open('test.txt', 'r') as f: 
    lines = f.readlines() 
    for line in lines: 
     newFile.append(line.strip().split(',')[1:3]) 

with open('test.txt', 'w') as f: 
    for line in newFile: 
     f.write(','.join(line) + '\n') 

Выполнить это с входного файла:

1,Trevor,H 
2,Matt,D 

Выход:

Trevor,H 
Matt,D 
Смежные вопросы