仅用 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]]
我目前正在处理多个文件并想写入 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]]