python writelines在csv的一个单元格中

时间:2014-09-12 18:45:43

标签: python csv

我有一个简单的问题。我试图通过阅读另一个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()

事实证明所有行都写在单元格上,我希望将它们放在不同的行和单元格中,如何更改我的代码?

1 个答案:

答案 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()

我使用了一个生成器表达式来过滤哪些行写入输出文件。