Я хотел бы выделить 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 по умолчанию равен '' для обеспечения обратной совместимости)