2014-09-12 2 views
0

У меня есть быстрый вопрос. Я пытался написать новый файл CSV, прочитав другой файл CSV, вот мой код:python writelines в одной ячейке 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() 

получается, что все строки написаны на ячейках, я хочу, чтобы иметь их в различных строках и ячейках , как я могу изменить свой код?

ответ

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() на них в явном виде.

Я использовал выражение генератора для фильтрации строк, которые записываются в выходной файл.

Смежные вопросы