Мне нужно отредактировать сценарий python, чтобы удалить кавычки из CSV, а затем записать обратно в тот же CSV-файл, цитаты удалены - PullRequest
0 голосов
/ 13 апреля 2020

Я видел похожие посты к этому, но все они кажутся печатными утверждениями (просмотр очищенных данных), а не перезаписывают исходный csv очищенными данными, поэтому я застрял. Когда я попытался записать обратно в CSV самостоятельно, он просто удалил все в файле. Вот формат csv:

30;"unemployed";"married";"primary";"no";1787;"no";"no";"cellular";19;"oct";79;1;-1;0;"unknown";"no"
33;"services";"married";"secondary";"no";4747;"yes";"cellular";11;"may";110;1;339;2;"failure";"no"
35;"management";"single";"tertiary";"no";1470;"yes";"no";"cellular";12;"apr"185;1;330;1;"failure";"no"

Он разделен точками с запятой, что нормально, но весь текст заключен в кавычки, и я хочу только удалить кавычки и записать обратно в файл. Вот код, к которому я вернулся, который успешно читает файл, удаляет все кавычки и затем печатает результаты:

import csv
f = open("bank.csv", 'r')
try:
    for row in csv.reader(f, delimiter=';', skipinitialspace=True):
        print(' '.join(row))
finally:
        f.close()

Любая помощь по правильной обратной записи в CSV будет оценена, спасибо!

Ответы [ 2 ]

1 голос
/ 13 апреля 2020

См. Здесь: Python CSV: удаление кавычек из значения

Я сделал это в основном двумя разными способами, в зависимости от размера CSV.

  1. Вы можете прочитать весь CSV-файл в python объект (список), сделать некоторые вещи, а затем перезаписать другой существующий файл очищенной версией
  2. Как и в приведенной выше ссылке, вы можете использовать один ридер и один писатель. Создайте новый файл и построчно напишите, как вы чистите входные данные из читателя csv, удаляете исходный csv и переименовываете новый, чтобы заменить старый файл.

По моему мнению, вариант № 2 является гораздо более предпочтительным, поскольку он предотвращает возможность потери данных, если ваш скрипт имеет ошибку во время записи. Кроме того, он будет использовать меньше памяти.

Наконец: может открыть файл для чтения / записи и выполнять итеративную перезапись, как go: это оставит вас открытыми для половины вашего файла с кавычками, а для половины - в случае сбоя вашего скрипта.

0 голосов
/ 13 апреля 2020

Вы могли бы сделать что-то вроде этого. Прочитайте это и напишите, используя цитату = csv.QUOTE_NONE

import csv
f = open("bank.csv", 'r')
inputCSV = []
try:
    for row in csv.reader(f, delimiter=';', skipinitialspace=True):
        inputCSV.append(row)
finally:
        f.close()

with open('bank.csv', 'w', newline='') as csvfile:
    csvwriter = csv.writer(csvfile, delimiter=';')
    for row in inputCSV:
        csvwriter.writerow(row)
...