파이썬에서 csv.reader
을 사용하여 사전에 csv 파일을 읽습니다. CSV 파일 첫 번째 열은 날짜 오브젝트로서 판독하고 dict
의 열쇠가된다 (2 개 가능한 포맷 중 하나)의 날짜이며, I는 칼럼 3 및 4 읽어csv.reader miss first line
import datetime as dt
import csv
with open(fileInput,'r') as inFile:
csv_in = csv.reader(inFile)
try:
dictData = {(dt.datetime.strptime(rows[0], '%d/%m/%Y %H:%M')): [rows[3], rows[4]]
for rows in csv_in}
except:
dictData = {(dt.datetime.strptime(rows[0], '%Y-%m-%d %H:%M:%S')): [rows[3], rows[4]]
for rows in csv_in}
그것을 파일의 첫 번째 날짜 (1/7/2012 00:00
)가 사전에 표시되지 않는 것을 제외하고는 작동합니다. csv.reader
에게 첫 번째 행이 헤더 행이 아니라고 설명해야합니까? 그렇다면 어떻게해야합니까?
작성한 코드는 해당 형식 (2012 년 1 월 7 일 00:00)으로 작업하고 첫 번째 줄을 읽어야합니다. 나는 빠른 테스트를했고 모든 라인을 읽었다. 그러나'try'와'except'가 반대로된다면, 첫 번째 라인을 놓치게 될 것이므로, 당신의 접근 방식은 좋지 않습니다. 내가 너라면 필자는 날짜 형식을 감지하고 파일의 시작 부분을 찾는다. (예 : 문서의 Sniffer 예제) 또한 형식을 미리 알고 있기 때문에 try/except를 피할 수 있습니다. 형식의 오류를 잡으려고 여전히 '시도'할 수 있습니다. –
고맙습니다. 사실, 대부분의 입력은 YYYY-MM-DD hh : mm : ss 형식이므로 모든 형식을이 형식으로 변환하고 하나의 형식 만 읽습니다. 하지만 왜 시도는 ... 예외 : 행을 놓치지? – doctorer