Using python csv writer without quotations

samsamara picture samsamara · May 27, 2014 · Viewed 27k times · Source

I'm trying to write a list of strings like below to a file separated by the given delimiter.

res = [u'123', u'hello world']

When I try splitting by TAB like below it gives me the correctly formatted string.

writer = csv.writer(sys.stdout, delimiter="\t")
writer.writerow(res)

gives --> 123   hello world

But when I try to split by space using delimiter=" ", it gives me the space but with quotation marks like below.

123 "hello world"

How do I remove quotation marks. So that when I use space as the delimiter I should get 123 hello world.

EIDT: when I try using the escapechar it doesn't make any double quotes. But everywhere in my testdata it appears a space, it makes it double.

Answer

Dair picture Dair · May 27, 2014

You can set the csv.writer to quote nothing with quoting=csv.QUOTE_NONE for example:

import csv
with open('eggs.csv', 'wb') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            escapechar=' ', quoting=csv.QUOTE_NONE)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])

Produces:

Spam Spam Spam Spam Spam Baked  Beans
Spam Lovely  Spam Wonderful  Spam

If you do QUOTING_NONE you also need and escape character.