2016-02-21 3 views
-2

У меня есть файл с именем y_and_n.csv, и это выглядит следующим образом:Python CSV записи, если условие выполняется

Y,13,foo 
N,19,bar 
Y,37,boo 
Y,71,fiz 
N,29,buz 

Какой самый лучший способ, чтобы написать код в Python, который сохраняет новый файл, y_only.csv, который будет выглядите как текст ниже?

Y,13,foo 
Y,37,boo 
Y,71,fiz 
+3

Что ты пробовал? – miradulo

+0

Я голосую, чтобы закрыть этот вопрос как не относящийся к теме, потому что это не служба написания кода. – jonrsharpe

ответ

0

Я бы написал следующее.

yn = open("y_and_n.csv",'r') 
y = open("y_only.csv",'w',newline='') 

for i in yn: 
    if i[0] == 'Y': 
     y.write(i) 

yn.close() 
y.close() 
+0

Если вы хотите разбить каждую строку в список, проверьте с этим, затем 'line.split (',')' сделают трюк для вас. – GarethPW

-1

Plain Python имеет очень хороший модуль для чтения/записи файлов CSV, названный csv.

Основная структура читателя:

import csv 
with open('some.csv', newline='') as f: 
    reader = csv.reader(f) 
    for row in reader: 
     print(row) 

Таким образом, вы shold заменить печати (строк) в течение одной структуры, если, выбирая только те строки, которые требуется напечатать. Строки - это списки, поэтому вы должны использовать [] для доступа к столбцам, как в строке [0] для первого столбца.

Следует помнить, что строка читается как список строк.

-1

Несколько похож на ответ GarethPW, но используя csv и выражение генератора:

import csv 
with open("y_and_n.csv") as open_file: 
    rows = list(csv.reader(open_file)) 

with open("y_only.csv", "w") as open_file: 
    writer = csv.writer(open_file) 
    writer.writerows(row for row in rows if row[0] == "Y") 
Смежные вопросы