rodling
rodling

Reputation: 998

CSV breaks up values on non delimeter

I am trying to read mixed CSV fields, where there are quoted fields and non-quoted numerical with the following :

from csv import reader

bar = """1234,"abc,def","dasd",341234234"""
foo = reader(bar)
[x for x in foo]

this returns

[['1'], ['2'], ['3'], ['4'], ['', ''], ['abc,def'], ['', ''], ['dasd'], ['', ''], ['3'], ['4'], ['1'], ['2'], ['3'], ['4'], ['2'], ['3'], ['4']]

I tried using foo = reader(bar, delimiter=',', quotechar='"')

But it still breaks up numbers. I basically need to read csv.QUOTE_NONNUMERIC from writer, but it is not reading it properly.

Upvotes: 0

Views: 27

Answers (1)

saurabh baid
saurabh baid

Reputation: 1877

csv reader works on file objects. Here is what you could do

from csv import reader
import StringIO

bar = """1234,"abc,def","dasd",341234234"""
f = StringIO.StringIO(bar)
foo = reader(f,  delimiter=',')
print [x for x in foo]

This will give you o/p

[['1234', 'abc,def', 'dasd', '341234234']]

Hope that works for you.

Upvotes: 2

Related Questions