Рассмотрим следующее (Python 3.2 под Windows):
>>> import io
>>> import csv
>>> output = io.StringIO() # default parameter newline=None
>>> csvdata = [1, 'a', 'Whoa!\nNewlines!']
>>> writer = csv.writer(output, quoting=csv.QUOTE_NONNUMERIC)
>>> writer.writerow(csvdata)
25
>>> output.getvalue()
'1,"a","Whoa!\nNewlines!"\r\n'
Почему существует один \n - не было ли преобразовано в \r\n, поскольку включен универсальный режим новых строк?
Когда это разрешено, на входе заканчиваются линии
\n,\rили\r\nпереводятся на\nперед возвратом вызывающему. И наоборот, на выходе\nпереводится в строку по умолчанию системы разделитель,os.linesep.