【问题标题】:Gregorian days to Julian days (Loop over a list)公历日到儒略日(循环列表)
【发布时间】:2014-08-14 00:21:01
【问题描述】:

我正在尝试从 csv 文件中读取天数列表,将公历日期转换为儒略日。这是我到目前为止的代码:

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

任何帮助将不胜感激。

【问题讨论】:

    标签: python loops for-loop time


    【解决方案1】:

    我会读入文件,并在您阅读时逐行对其进行操作。也不需要压缩东西,然后立即打开包装。您也可以将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
    

    【讨论】:

      猜你喜欢
      • 2013-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-29
      • 2014-06-20
      • 1970-01-01
      • 2018-04-29
      • 1970-01-01
      相关资源
      最近更新 更多