Удаление строки из csv (Python)

#python

#python

Вопрос:

Итак, я пытаюсь создать функцию для удаления строки из моего csv в зависимости от имени, заданного параметром.

Исходный файл:

 Janet,5,cats
Wilson,67,dogs
Karen,8,mice
John,12,birds
  

Мой код:

 csv_remove("Karen")
  

Предполагаемый файл:

 Janet,5,cats
Wilson,67,dogs
John,12,birds
  

Однако, когда я выполняю свой код, я получаю странные новые строки повсюду.

 Janet,5,cats

Wilson,67,dogs

John,12,birds


  

Вот полный код:

 def csv_remove(name):
    element_list = []
    with open(csv_path, 'r') as j:
        csv_file = csv.reader(j)
        for row in csv_file:
            element_list.append(row)
            if row[0] == name:
                element_list.remove(row)
    with open(csv_path, 'w') as j:
        csv_file = csv.writer(j)
        csv_file.writerows(element_list)

csv_remove("Karen")
  

Ответ №1:

Прочитайте документацию. При открытии файла для записи с использованием csv-модуля вам необходимо указать newline="" :

Источник: https://docs.python.org/3/library/csv.html#csv.writer

csv.writer(csvfile, dialect=’excel’, **fmtparams)
Возвращает объект writer, отвечающий за преобразование пользовательских данных в строки с разделителями в данном файлоподобном объекте. csvfile может быть любым объектом с помощью метода write(). Если csvfile является файловым объектом, он должен быть открыт с новой строкой =»

CSV-модуль сам обрабатывает новые строки. Если вы не укажете newline='' для открытого файла, это испортит окончания строк, и в итоге в нем останутся пустые строки.