Я хотел бы выделить None
и пустые строки при переходе между структурой данных Python и представлением csv с использованием модуля Python csv
.
Моя проблема в том, что когда я запускаю:
import csv, cStringIO
data = [['NULL/None value',None],
['empty string','']]
f = cStringIO.StringIO()
csv.writer(f).writerows(data)
f = cStringIO.StringIO(f.getvalue())
data2 = [e for e in csv.reader(f)]
print "input : ", data
print "output: ", data2
Я получаю следующий вывод:
input : [['NULL/None value', None], ['empty string', '']]
output: [['NULL/None value', ''], ['empty string', '']]
Конечно, я мог бы играть с data
и data2
, чтобы различать None
и пустые строки с такими вещами, как:
data = [d if d!=None else 'None' for d in data]
data2 = [d if d!='None' else None for d in data2]
Но это частично отразило бы мой интерес к модулю csv
(быстрая десериализация/сериализация, реализованная на C, особенно когда вы имеете дело с большими списками).
Есть ли csv.Dialect
или параметры для csv.writer
и csv.reader
, которые позволят им различать ''
и None
в этом прецеденте?
Если нет, будет ли интерес к реализации патча к csv.writer
, чтобы включить этот вид назад и вперед? (Возможно, параметр Dialect.None_translate_to
по умолчанию равен ''
для обеспечения обратной совместимости)