将浮点数列表写入CSV文件

8

我有一组浮点数,格式如下:

float_list = [1.13, 0.25, 3.28, ....]

我使用以下代码将其写入 .csv 文件:

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()

result.get_value() 是什么:

def get_value():
    return float(value)

我希望每个单元格中都有一个值。然而,我得到的结果看起来像这样:

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

每个数字似乎占据一个单元格。

那么,我可以知道如何解决这个问题并获得我预期的结果吗?

4个回答

7
< p > writer.writerow() 方法接受一个序列(列表或元组),但是你却传入了一个字符串。由于传入的是字符串,writer.writerow() 仍将其视为序列,因此每个单独字符都成为了一个列值:

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

此外,该方法会自动将列转换为字符串 ,无需您自己进行操作。 相反,建立一个浮点值列表并传入即可:
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)

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

分隔符默认为,

你说你不需要进行转换,但是在示例中留下了任何东西吗?我认为这里整个“row”都是多余的...根据OP的“get_value()”,writer.writerow(result_list) - Jon Clements
@JonClements:那么至少需要 writer.writer([r.get_value() for r in result_list]) - Martijn Pieters

6

使用delimiter,只需要写出列表,不需要将其转换为字符串:

import csv

float_list = [1.13, 0.25, 3.28]

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

输出:

1.13,0.25,3.28

由于您使用了with,因此无需关闭文件。

编辑:

@Martijn Pieters:默认情况下分隔符为,

来自文档

用于分隔字段的一个字符字符串。默认为“,”。

这行writer = csv.writer(file, delimiter=',')可以改为writer = csv.writer(file)


delimiter=',' 是默认设置。 - Martijn Pieters

4

我想把一个数字,比如 1234,写入到 csv 文件中(delimiter=' '),结果会变成 1 2 3 4。

我从另一个网站得到了以下答案,但是希望在这里分享:

number = 1.13
writer.writerow([number])

1
下面的代码将一系列浮点数写入CSV文件。
import csv

float_str=['1.500','2.48933','7.36945']

with open('output_path','w',newline='') as file:

    write=csv.writer(file, delimiter='\n')
    for num in float_str:
        write.writerow(num)

这完全是错误的,至少在发布之前尝试一下你的代码。此外,它对其他答案没有任何贡献。 - krisz
它添加了 delimiter = \n,对于将数据导出为列格式最为适用。 - Matias Andina

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接