2015-08-14 4 views
1

Вот файл CSV ниже:CSV-файл с помощью фильтрации Джанго (питон)

"header1","header2","header3" 
0.051267,0.69956,1 
-0.51325,0.46564,1 
0.085829,-0.75512,0 
0.14919,-0.57968,0 
0.13767,0.57529,1 
-0.0063364,0.39985,1 
-0.092742,0.55336,1 

Я хочу, чтобы забрать записи, где столбец «Заголовок 3» равен 0. Но я получаю исключение KeyError когда бегущая строка текст 7.

Ошибка:

Request Method: GET 
Request URL: http://127.0.0.1:8000/filter/ 
Django Version: 1.8.3 
Exception Type: KeyError 
Exception Value:2 
Exception Location: C:\Users\antsy\Desktop\datahub-master\view\showdata.py in csv_Filter, line 7 
Python Executable: C:\Python27\python.exe 
Python Version: 2.7.10 

Python код:

def csv_Filter(request): 
writer = csv.writer(file(r'test\temp.txt', 'wb')) 
with open(r'test\ex2data2.txt', 'rb') as f: 
    reader = csv.DictReader(f) 
    writer.writerow(f.read(0)) 
    for row in reader: 
     if row[2] == 0: 
      writer.writerow(row) 
reader = file(r'test\temp.txt', 'rb') 
respond = showTable(request, r'test\temp.txt', reader) #another def 
return respond 
+0

Пожалуйста, включите полную проверку ошибки. Кроме того, ваш код python не имеет отступов должным образом. – cpburnz

ответ

0

Это будет делать трюк:

import csv 

with open('source.csv', 'rb') as source_csv: 
    with open('target.csv', 'wb') as target_csv: 
     reader = csv.DictReader(source_csv) 
     writer = csv.DictWriter(target_csv, fieldnames = reader.fieldnames) 
     writer.writeheader() 
     for row in reader: 
      if row['header3'] == '0': 
       writer.writerow(row) 

Он генерирует следующий файл:

header1,header2,header3 
0.085829,-0.75512,0 
0.14919,-0.57968,0 

Пожалуйста, посмотрите на csv module documentation для большего количества примеров.

+0

Ничего себе! это работает! Спасибо! –

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