Рассмотрим следующее (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
.