公历日到儒略日(循环列表)

2024-05-12 16:23:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从公历日期转换为朱利安日期,从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

任何帮助都将不胜感激。你知道吗


Tags: 文件csvinimportfordatalinedj
1条回答
网友
1楼 · 发布于 2024-05-12 16:23:13

我会把文件读入,然后像你读的那样逐行操作。也没有必要拉链的东西,然后立即打开它。您还可以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

相关问题 更多 >