30

Using python, i am writing data from a list to a .csv file, row-wise.

Code:

writer=csv.writer(open(filepath,'wb'))
header=['type','id','numberOfUpdates','isPingEnabled','lastUpdated']
length_list=len(header)
i=0

while i!=length_list :
    data=header[i]
    print data
    i=i+1
    writer.writerow(data)

Result: Data is being written to csv file but each letter is printed in each column.

For example: type is written as 't' in one column, 'y' in next column and so on. I need the whole word in one column. Can some one point out what change can i make?

Thanks

  • 4
    I don't think this question deserves a downvote. It is a clearly written question. The only fault the OP made was probably not fully understanding the documentation of the csv module. – jdi Jan 03 '13 at 06:52
  • +1 IMHO there is nothing wrong with this question. – tumultous_rooster Jun 11 '14 at 17:14

2 Answers2

50

Change writer.writerow(data) to writer.writerow([data]).

.writerow takes an iterable and uses each element of that iterable for each column. If you use a list with only one element it will be placed in a single column.

You should also restructure your loop:

for word in header:
    writer.writerow([word])
Tim
  • 11,710
  • 4
  • 42
  • 43
0

This work for me:

for item in RESULTS:
     wr.writerow([item,])
Minhaj Javed
  • 913
  • 8
  • 20