2012-06-22 4 views
1

다음과 같이 보이는 데이터가있는 CSV 파일이 있습니다 (아래 참조).dateutil을 사용하여 구문 분석

Datetime, Data 

19920101 00:00,2 
19920101 01:00,3 
19920101 23:00,5 
19920505 12:00,5 
+2

무엇을 시도 했습니까? 또한이 문맥에서 "누락 된 날짜 시간"및 "누락 된 데이터"로 분류되는 것은 무엇입니까? – ig0774

+0

명확히하기 : 날짜 기록이 19920101 01:00에서 19920101 23:00까지 22 시간 동안 점프하고, 누락 된 시간을 삽입하고 'M'을 데이터로 지정하고자합니다. 나는 파이썬으로 초보자이며 아직 성공하지 못하여 데이트 트 일을 시도하고있다. –

답변

1

하지 완전한 대답을하지만, 단지 날짜 시간 문자열을

>>> s="19920101 00:00" 
>>> format = "%Y%m%d %H:%M" 
>>> d = datetime.datetime.strptime(s, format) 
>>> print d 
1992-01-01 00:00:00 

윌이 구문 분석을 시도 : 나는 (실종) 날짜 시간을 구문 분석하는 데 도움이 DATE_TIME 누락 및 "M"으로 누락 된 데이터를 할당 채울 필요 누락 된 날짜와 시간을 찾는 데 도움이됩니다.

문자열 3에 무엇이 있는지 알 수 없습니다. 3 19920101 23:00.

[편집 : 귀하의 의견에 따라]

코드에 따라서
>>> expected = d + datetime.timedelta(days=1) 
>>> print expected 
1992-01-02 00:00:00 

, 당신이 (당신은 일을하고이를 수정해야합니다) 이런 식으로 뭔가를 시도 할 수

[편집 : 코드 교체]

import csv 
import sys 
import datetime 
import pprint 


all_data_points = {} 
all_dates = [] 
expected = '' 
format = "%Y%m%d %H:%M" 

with open('datafile', 'rt') as f: 
    reader = csv.reader(f) 
    for row in reader: 
     if row and 'Datetime' not in row: 
      day_str = row[0] 
      rain_str = row[1] 
      if not expected: 
       all_data_points[day_str] = rain_str 
       all_dates.append(day_str) 
       d = datetime.datetime.strptime(day_str, format) 
       expected = d + datetime.timedelta(days=1) 
      else: 
       d = datetime.datetime.strptime(day_str, format) 
       gap_in_days = d - expected 
       start_day = expected 
       if gap_in_days.days > 1: 
        for i in xrange(gap_in_days.days): 
         next_day = start_day + datetime.timedelta(days=1+i) 
         day_str = next_day.strftime(format) 
         all_data_points[day_str] = 'M' 
         all_dates.append(day_str) 
       all_data_points[day_str] = rain_str 
       expected = d 

    pprint.pprint(all_data_points) 
+0

3 그 시간의 강수량 데이터입니다. 19920101 00:00에서 19931231 23:00까지 datetime을 나열하고 datetime에 레코드가 없으면 문자 'M'을 할당하십시오. –

+0

정확히 무엇을해야합니까? , 시도하자, 나는 프로그래밍에 초보자 그래서 내가 스택을했습니다 –

+0

당신의 코드를 사용하지만 어디에서 썼습니다 : all_data [day_str], 나는 오류가 발생합니다. 목록 색인이 day_str에있는 형식을 가질 수 없다고 생각했습니다. 내가 맞습니까? –