我有包含18列的CSV输入文件 我需要使用输入中的所有列创建新的CSV文件,第4列和第5列除外
我的功能现在看起来像
def modify_csv_report(input_csv, output_csv):
begin = 0
end = 3
with open(input_csv, "r") as file_in:
with open(output_csv, "w") as file_out:
writer = csv.writer(file_out)
for row in csv.reader(file_in):
writer.writerow(row[begin:end])
return output_csv
所以它读取和写出0到3号列,但我不知道如何跳过第4,5列并从那里继续
答案 0 :(得分:2)
您可以使用切片添加行的其他部分,就像您对第一部分所做的那样:
writer.writerow(row[:4] + row[6:])
请注意,要包含第3列,第一个切片的停止索引应为4.通常也不需要指定起始索引0.
更通用的方法是使用列表理解和enumerate
:
exclude = (4, 5)
writer.writerow([r for i, r in enumerate(row) if i not in exclude])
答案 1 :(得分:2)
如果您的CSV具有有意义的标题,则可以使用$('#target').html2canvas({
onrendered: function (canvas)
{
var img = canvas.toDataURL("image/jpg");
}
});
和DictReader
类来使用索引切片行的替代解决方案。
DictWriter
答案 2 :(得分:0)
这就是你想要的:
import csv
def remove_csv_columns(input_csv, output_csv, exclude_column_indices):
with open(input_csv) as file_in, open(output_csv, 'w') as file_out:
reader = csv.reader(file_in)
writer = csv.writer(file_out)
writer.writerows(
[col for idx, col in enumerate(row)
if idx not in exclude_column_indices]
for row in reader)
remove_csv_columns('in.csv', 'out.csv', (3, 4))