#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=''
для открытого файла, это испортит окончания строк, и в итоге в нем останутся пустые строки.