[issue23041] csv needs more quoting rules
tegdev
report at bugs.python.org
Sun May 5 13:19:38 EDT 2019
tegdev <tegdev at dragon.escape.de> added the comment:
The correct handling of None values belongs to the csv module.
There is a use case to migrate a DB2 database to PostgreSQL.
DB2 has a command line tool "db2 export ..." which produces csv-files.
A row
['Hello', null, 'world']
is exported to
"Hello,,"world".
I would like to read in these exports with python and put it to PostgreSQL.
But with the csv library I can't read it in correctly. The input is converted to:
['Hello', '', 'world']
It should read as:
['Hello', None, 'world']
It is pretty easy to write a correct CSV reader with ANTLR but it's terribly slow.
And last but not least: if someone writes a list the reading should the identity.
Thats not True for the csv libraray.
Example:
import csv
hello_out_lst = ['Hello', None, 'world']
with open('hello.csv', 'w') as ofh:
writer = csv.writer(ofh, delimiter=',')
writer.writerow(hello_out_lst)
with open('hello.csv', 'r') as ifh:
reader = csv.reader(ifh, delimiter=',')
for row in reader:
hello_in_lst = row
is_equal = hello_out_lst == hello_in_lst
print(f'{hello_out_lst} is equal {hello_in_lst} ? {is_equal}')
The result is:
['Hello', None, 'world'] is equal ['Hello', '', 'world'] ? False
----------
nosy: +tegdev
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue23041>
_______________________________________
More information about the Python-bugs-list
mailing list