python3: csv.writer как убрать конец строки ^ M? - PullRequest
1 голос
/ 11 апреля 2020

Я понял, что каждый конец строки моего файла export.csv заканчивается на ^ M, Есть идеи, как его удалить? Вероятно, мне нужно как-то изменить csv.writer. Когда я импортирую этот CSV-файл в SQL, я получаю один дополнительный столбец NULL в конце строки. : (

Я читаю csv в массив с этим кодом:

datafile = open('source.csv', 'r')
datareader = csv.reader(datafile, delimiter=',')
...

, а затем записываю в другой файл csv с этим кодом

with open('export.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=',',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerows(data2)

1 Ответ

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

Вы должны открыть исходный файл с помощью newline='', чтобы исходные окончания новой строки могли быть сохранены для csv.reader для правильной обработки новых строк:

datafile = open('source.csv', 'r', newline='')

Выдержка из документации :

Если newline='' не указан, символы новой строки, встроенные в поля в кавычках, не будут интерпретироваться правильно, и на платформах, которые используют \r\n строк при записи, добавляется дополнительный \r. Всегда следует указывать newline='', поскольку модуль csv выполняет собственную (универсальную) обработку новой строки.

...