2012-05-27 2 views
3

CSV 파일 읽기. 다음 목록의 헤더가 없으면 오류 메시지를 발생시키고 싶습니다. csv 파일에서 최소한 하나의 헤더 여야합니다. 헤더는 age sex city입니다. 나는 이런 식으로 노력하고있어. 감사합니다헤더가없는 경우 오류 발생 (CSV 파일)

+1

'with '문 뒤에 들여 쓰기가 필요합니다. – beardc

답변

1

어때요?

+0

빠른 응답. 고마워요 .-) – Shah

+0

모든 목록과 일치합니다. 모든 머리글과 일치하고 싶지 않아. 가능하니? – Shah

+0

@ 리차드 : 미안하지만 무슨 뜻인지 이해가 안됩니다. 열의 순서가 다를 수 있습니까? '도시'란만 반환 하시겠습니까? 그게 뭔가? –

0

헤더를 찾으면 헤더 검사를 통과해야합니다. 그렇지 않으면 예외가 발생합니다.

import csv 

with open('data.csv','rb') as f: 
    fieldnames = ['age','sex','city'] 
    cf = csv.DictReader(f) 
    headers = cf.fieldnames 

    if len(set(fieldnames).intersection(set(headers))) == 0: 
     raise csv.Error("CSV Error: Invalid headers: %s" % str(headers)) 

    for row in cf: 
     city = row['city'] if 'city' in headers else "N/A" 
     sex = row['sex'] if 'sex' in headers else "N/A" 
     age = row['age'] if 'age' in headers else "N/A" 
     print "city: " + city + ", sex: " + sex + ", age: " + age