I am trying to write a list of float or int into a csvfile row-wise.
for some reason I am able to write them if the list are made up of strings
import csv
even_numbers = ['2','4','6','8'] # list of strings
header = ['even numbers']
with open('even_numbers.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(header)
writer.writerows(even_numbers)
but when there are integers it throws an error
import csv
even_numbers = [2,4,6,8] # list of integers
header = ['even numbers']
with open('even_numbers.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(header)
writer.writerows(even_numbers)
error
---------------------------------------------------------------------------
Error Traceback (most recent call last)
<ipython-input-15-ae817296f34e> in <module>
6 writer = csv.writer(csvfile)
7 writer.writerow(header)
----> 8 writer.writerows(Even_list)
Error: iterable expected, not int
What other ways can I write a list to csv row-wise?
>Solution :
The writerows() method expects a list of lists. A row is a list and the rows are a list of those.
Two solutions, depending on what you want:
even_numbers = [[2, 4, 6, 8]]
or
even_numbers = [[2], [4], [6], [8]]
To do that latter transformation automatically, use:
rows = [[data] for data in even_numbers]
writer.writerows(rows)