迭代CSV列Python中行中的每个整数

时间:2018-08-07 15:25:07

标签: python epoch

csv文件的每一行都采用以下格式:

527131607.9 Google Maps   

总共有2列。为此,我们只对第一列感兴趣。 我一直在使用代码:

import datetime
with open("user1_nsdate.csv",'r') as f:
    for row in f:
       for t, val in enumerate(row):
          time = datetime.datetime.fromtimestamp(t+978307200).strftime('%Y-%m-%d %H:%M:%S')

          print(time)

但是,输出错误,因为它没有转换 正确地:

2001-01-01 00:00:11
2001-01-01 00:00:00
2001-01-01 00:00:01
2001-01-01 00:00:02
2001-01-01 00:00:03
2001-01-01 00:00:04
2001-01-01 00:00:05
2001-01-01 00:00:06

用纪元时间替换“ t”时:

import datetime
with open("user1_nsdate.csv",'r') as f:
    for row in f:
       for t, val in enumerate(row):
          time = datetime.datetime.fromtimestamp(527131607.9 + 978307200).strftime('%Y-%m-%d %H:%M:%S')

          print(time)

输出:

2017-09-15 02:26:47
2017-09-15 02:26:47
2017-09-15 02:26:47
2017-09-15 02:26:47
2017-09-15 02:26:47

但是我需要它遍历csv文件第一列中的每一行

1 个答案:

答案 0 :(得分:0)

将您的strftime更改为.strftime("%d-%m-%y %H:%M:%S")

>>> time = datetime.fromtimestamp(527131607.9+978307200).strftime("%d-%m-%y %H:%M:%S")
>>> print(time)
15-09-17 02:26:47

此处提供了所有格式代码的信息:

https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior

评论后更新:

如果文件看起来像这样。

527131607.9
527131127.1
525123123.9
...

您可以执行以下操作:

with open('test.csv', 'r') as f:
  for row in f:
    time = datetime.fromtimestamp(float(row)+978307200).strftime("%d-%m-%y %H:%M:%S")
    print(time)

这是一个非常简单的文件。我认为我们不需要使用内置的csv模块。