我有一个浮点数列表,其格式为:
float_list = [1.13, 0.25, 3.28, ....]
Run Code Online (Sandbox Code Playgroud)
我使用以下代码将其写入.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()
Run Code Online (Sandbox Code Playgroud)
在哪里result.get_value():
def get_value():
return float(value)
Run Code Online (Sandbox Code Playgroud)
我希望在每个单元格中看到有一个值.但是,我得到的是:
1 . 1 3 , 0 . 2 5 , 3 . 2 8 ,
Run Code Online (Sandbox Code Playgroud)
似乎每个数字占据一个单元格.
那么,我可以知道如何解决这个问题并得到我的期望吗?
将writer.writerow()需要一个序列(列表或元组),但你传递一个字符串代替.通过传入一个字符串,writer.writerow()仍然将其视为序列,并且每个单独的字符都成为一个列值:
1,.,1,3,,,0,.,2,5,,,3,.,2,8
Run Code Online (Sandbox Code Playgroud)
此外,该方法为您将列转换为字符串,请不要自己执行此操作.
而是构建一个浮点值列表并将其传递给:
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)
Run Code Online (Sandbox Code Playgroud)
甚至:
with open(output_path, "wb") as file:
writer = csv.writer(file)
writer.writerow([r.get_value() for r in result_list])
Run Code Online (Sandbox Code Playgroud)
分隔符默认为,.
使用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)
Run Code Online (Sandbox Code Playgroud)
输出:
1.13,0.25,3.28
此外,您无需关闭文件,因为您使用过with
编辑:
@Martijn Pieters:分隔符,是默认的.
来自Docs:
用于分隔字段的单字符字符串.它默认为','.
这条线writer = csv.writer(file, delimiter=',')可以writer = csv.writer(file)