CSV dans Python adding an extra carriage return, sur Windows

CSV in Python adding an extra carriage return, on Windows


Source : Stack Overflow [windows]

Python 3:

The official csv documentation recommends opening the file with newline='' on all platforms to disable universal newlines translation:

`with open(‘output.csv’, ‘w’, newline=‘’, encoding=‘utf-8’) as f:
writer = csv.writer(f)


The CSV writer terminates each line with the [`lineterminator` of the dialect](https://docs.python.org/3/library/csv.html#csv.Dialect.lineterminator), which is `'\r\n'` for the default `excel` dialect on all platforms because that's what [RFC 4180](https://www.rfc-editor.org/rfc/rfc4180#section-2) recommends.

Python 2:

On Windows, always open your files in binary mode (`"rb"` or `"wb"`), before passing them to `csv.reader` or `csv.writer`.

Although the file is a text file, CSV is regarded a **binary** format by the libraries involved, with `\r\n` separating records. If that separator is written in text mode, the Python runtime replaces the `\n` with `\r\n`, hence the `\r\r\n` observed in the file.

See [this previous answer](https://stackoverflow.com/questions/1170214/pythons-csv-writer-produces-wrong-line-terminator/1170297#1170297).