2016-04-18 5 views
0

У меня есть система python, где он загружает вопросы и ответы из отдельных файлов csv для программы на основе викторины, используя tkinter. Я могу загрузить файлы, отобразить их, позволить пользователю добавлять больше вопросов и многое другое.Python CSV Удаление строки в зависимости от номера строки

Я застрял в поиске способа использования python для удаления строки, зависящей от questionNo (счетчик строк). Система работает ими, переходя к вопросу, используя следующую и предыдущую кнопки, а затем нажав кнопку delete по интересующему их вопросу. Поэтому у меня есть доступ к questionNo (индекс строки, которую я хочу удалить), но не знаю, как удалить его с помощью python.

Любая помощь будет оценена по достоинству. Я бы включил свой код, но многие из них контекстуальны для моей программы (курсовая работа на уровне), и это всего лишь небольшая часть. Я НЕ ХОЧУ ИСПОЛЬЗОВАТЬ ДРУГОЙ файл CSV как ВРЕМЕННЫЙ.

+0

Если вы не хотите использовать другой временный файл, вам придется хранить все строки, удалять все, что вы хотите, из списка, а затем перезаписывать исходный файл. –

ответ

0

Если вы используете пакет pandas, вы можете перетащить свои файлы csv в свою RAM, а затем использовать его, как хотите, перед сохранением и стиранием предыдущего файла. Он очень эффективен для работы с csv и не использует временные csv. Чтобы открыть свои файлы и загружать их в Dataframe:

import pandas as pd 
questions = pd.read_csv('questions.csv') 
answers = pd.read_csv('answers.csv') 

Вы можете добавить индекс к этим Dataframes по:

questions = pd.read_csv('questions.csv', columns = my_columns, index = my_index) 

Затем, чтобы удалить строку:

questions = questions.drop(number_of_your_question) 
answers = answers.drop(number_of_your_answer) 

И для сохранения файлов:

questions.to_csv 
answers.to_csv 
+0

Не может показаться, что программа работает, чтобы установить его, продолжает давать мне ошибки. Я скоро обновлю, если я смогу заставить его работать, потому что это было то решение, которое я искал. –

+0

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

+0

Вы будете использовать горизонтальный указатель. Это то, что вы установили с опцией «index = my_index». По умолчанию индекс вашего фрейма данных выглядит как список, в основном содержащий номера строки. , затем, набрав вопросы = question.drop (number_of_your_question, вы воссоздаете dataframe, «забыв» строку [i], где i - номер вашего вопроса. Обратите внимание, что индекс не будет изменен, так что если вы удалите 4-й вопрос, новый 4-й вопрос будет по-прежнему иметь 5 для индекса, так как это был 5-й вопрос. Чтобы избежать этого, вам нужно набрать: df.reset_index(). drop ('index', 1) – ysearka

Смежные вопросы