поведение читателя csv с None и пустой строкой
Я бы хотел отличитьNone
и пустые строки при переходе назад и вперед между структурой данных Python и представлением csv с использованием Pythoncsv
модуль.
Моя проблема в том, что когда я бегу:
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
параметр по умолчанию равен''
для обеспечения обратной совместимости)