write float list to csv file

csv, python

Solution

The `writer.writerow()` takes a sequence (a list or tuple), but you are passing in a string instead. By passing in a string, `writer.writerow()` still treats it as as sequence, and each individual character becomes a column value:

1,.,1,3,,,0,.,2,5,,,3,.,2,8

Moreover, the method converts column to strings for you, don't do this yourself.

Instead build a list of your float values and pass that in:

row = []
for result in result_list:
    row.append(result.get_value())

with open(output_path, "wb") as file:
    writer = csv.writer(file)
    writer.writerow(row)

or even:

with open(output_path, "wb") as file:
    writer = csv.writer(file)
    writer.writerow([r.get_value() for r in result_list])

The delimiter defaults to `,`.

Problem

I have a list of float numbers, its format is: ``` float_list = [1.13, 0.25, 3.28, ....] ``` I used following code to write it to a .csv file: ``` float_str = "" for result in result_list: float_str = float_str + str(result.get_value()) + "," with open(output_path, "wb") as file: writer = csv.writer(file) writer.writerow(float_str) file.close() ``` where `result.get_value()` is: ``` def get_value(): return float(value) ``` I expect to see that in each cell, there is a value. However, what I've got looks like: ``` 1 . 1 3 , 0 . 2 5 , 3 . 2 8 , ``` It seems that each of the digits occupies a cell. So, may I know how can I solve this issue and get what I expected?

Original source