2014-08-14 3 views
0

Я пытаюсь преобразовать из григорианских дат в юлианские дни, читая список дней из файла csv. Это код, который я до сих пор:Григорианские дни в юлианские дни (Loop over a list)

import date time 
import csv 
import math 
import numpy 

data = open('tmp2') 

month, day = [ ], [ ], [ ] 

for index, line in enumerate(data.readlines()): 

    year.append(int(line.split(",")[0])) 
    month.append(int(line.split(",")[1])) 
    day.append(int(line.split(",")[2])) 

for y, d, m in zip(year, day, month): 
    DJ= d - 32075 + 1461*(y + 4800 + (m -14)/12)/4 + 367*(m - 2 - (m - 14)/12 * 12)/12 - 3*((y + 4900 + (m -14)/12)/100)/4 

print DJ 

Но я получил это в результате:

2456177 
    2456177 

в основном только два значения. Файл csv имеет следующую структуру:

2012,7,09 
2012,7,11 
2012,8,11 
2012,8,12 
2012,8,14 
2012,9,19 
2012,9,20 
2012,9,23 

Любая помощь будет оценена.

ответ

0

Я хотел бы прочитать файл и работать с ним по очереди, пока вы читаете. Также нет необходимости что-то застегивать, а затем немедленно распаковать. Также вы можете map значение в int так что вы можете работать на них

with open('tmp2', 'r') as f: 
    for line in f: 
     y, m, d = map(int, line.split(',')) 
     DJ = d - 32075 + 1461*(y + 4800 + (m -14)/12)/4 + 367*(m - 2 - (m - 14)/12 * 12)/12 - 3*((y + 4900 + (m -14)/12)/100)/4 
     print DJ 

выхода (я не знаю, если это правильно, я просто использовал вашу формула)

2456119 
2456121 
2456152 
2456153 
2456155 
2456191 
2456192 
2456195 
Смежные вопросы