我有一个简单的问题。我试图通过阅读另一个csv文件来编写一个新的csv文件,这是我的代码:
f_r = open("Bus.csv")
f_w = open("PJM_LMP.csv","w")
f = csv.reader(f_r)
for read_line in f:
if read_line[3] == "PJM_H" or read_line[3] == "PJM_G":
f_w.writelines(read_line)
f_r.close()
f_w.close()
事实证明所有行都写在单元格上,我希望将它们放在不同的行和单元格中,如何更改我的代码?
答案 0 :(得分:2)
使用csv.writer()
作为输出文件,而不是尝试将列表直接写入文件:
with open("Bus.csv", 'rb') as f_r, open("PJM_LMP.csv", "wb") as f_w:
reader = csv.reader(f_r)
writer = csv.writer(f_w)
writer.writerows(r for r in reader if r[3] in {"PJM_H", "PJM_G"})
上述代码也将文件用作上下文管理器,无需明确调用close()
。
我使用了一个生成器表达式来过滤哪些行写入输出文件。