Comportamento do leitor csv com None e string vazia
Eu gostaria de distinguirNone
e strings vazias ao ir e voltar entre a estrutura de dados Python e a representação csv usando o Pythoncsv
módulo.
Meu problema é que quando eu corro:
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
Eu recebo a seguinte saída:
input : [['NULL/None value', None], ['empty string', '']]
output: [['NULL/None value', ''], ['empty string', '']]
Claro, eu poderia brincar comdata
edata2
distinguirNone
e seqüências de caracteres vazias com coisas como:
data = [d if d!=None else 'None' for d in data]
data2 = [d if d!='None' else None for d in data2]
Mas isso parcialmente derrotaria meu interesse pelocsv
módulo (desserialização rápida / serialização implementada em C, especialmente quando você está lidando com listas grandes).
Tem algumacsv.Dialect
ou parâmetros paracsv.writer
ecsv.reader
que lhes permitiria distinguir entre''
eNone
neste caso de uso?
Se não, haveria interesse em implementar um patch paracsv.writer
para ativar esse tipo de ida e volta? (Possivelmente umDialect.None_translate_to
parâmetro padrão para''
para garantir compatibilidade com versões anteriores)