仅用 header 行写入 CSV 文件

Writing to a CSV file with only one header line

我目前正在处理多个文件并想写入 csv。我在 for 循环中将它们全部打开,并根据文件中的信息进行计算。我想将所有这些数据写入一个 csv 文件。

我的 for 循环中有这段代码:

header = ['cost', 'tax', 'percentage_of_pay']
data = [price, taxes, pay_percentage]

with open('Sales-and-cost.csv', 'a+') as f:
    writer=csv.writer(f, delimiter='\t', lineterminator='\n')
    writer.writerow([header])
    writer.writerow([data])

然而它每次运行文件时都会放入 header 信息,看起来像这样:

cost tax percentage_of_pay
---- ---- -----------------
cost tax percentage_of_pay
--- --- -----------------
cost tax percentage_of_pay
--- --- -----------------

基本上,它会多次重写 header 行,而我只希望它在第一行出现一次。

我也 运行 遇到数据写入的问题,但其中一部分将在一列中,另一部分将在另一列中。例如,成本列将具有值,而税收列将具有成本列中值的单位,因此不是只有三列写入数据,而是有六列。这是一个例子:

cost tax percentage_of_pay
units for cost cost value units for tax

关于如何解决这些问题有什么想法吗?谢谢!

您的代码有两个问题,第一个是 data 是一个列表,但您将其包含在另一个列表中,即 [header][['cost', 'tax', 'percentage_of_pay']] 相同是列表的列表。

其次,您通常会先写入 header,然后在每个数据行一个循环中写入数据

你可能想要这样的东西:

with open('Sales-and-cost.csv', 'w') as f:
    writer=csv.writer(f, delimiter='\t', lineterminator='\n')
    writer.writerow(header)
    
    for row in rows:
        writer.writerow(row)

其中行是包含输出数据的列表列表,即

rows = [[price_1, taxes_1, pay_percentage_1],[price_2, taxes_2, pay_percentage_2],[price_3, taxes_3, pay_percentage_3]]