【问题标题】:pythonian comparison: date.time from csv file to date.time from timestamppythonian 比较:从 csv 文件到 date.time 从时间戳的 date.time
【发布时间】:2013-05-10 08:12:30
【问题描述】:

在 python 中,我导入一个 csv 文件,每行都有一个日期时间值 (2013-03-14 07:37:33) 我想将它与我通过时间戳获得的日期时间值进行比较。 我假设当我读取 csv 时,结果是字符串,但是当我尝试在循环中将它们与时间戳中的字符串进行比较时,根本不会比较它们而不会同时给我一个错误。

有什么建议吗?

csv_in = open('FakeOBData.csv', 'rb')
reader = csv.reader(csv_in)

for row in reader:
    date = row
    OBD.append(date)

。 . .

for x in OBD:
    print x
    sightings = db.edge.find ( { "tag" : int(participant_tag)},{"_id":0}).sort("time")
    for sighting in sightings:
        time2 = datetime.datetime.fromtimestamp(time)
        if x == time2:

【问题讨论】:

  • 您能否扩展您的意思,“但是当我尝试在循环中将它们与时间戳中的字符串进行比较时,根本不会比较它们而不同时给我一个错误”跨度>

标签: python datetime csv timestamp


【解决方案1】:

使用datetime.datetime.strptime 将字符串解析为日期时间对象。您可能还需要确定 CSV 中的日期字符串来自哪个时区并进行调整。

%Y-%m-%d %H:%M:%S 应作为您的格式字符串:

x_datetime = datetime.datetime.strptime(x, '%Y-%m-%d %H:%M:%S')
if x_datetime == time2:

或者阅读的时候解析一下:

for row in reader:
    date = datetime.datetime.strptime(row[0], '%Y-%m-%d %H:%M:%S')

【讨论】:

    【解决方案2】:

    您可以使用 datetime.datetime.strptime 自己解析它,如果您知道日期的格式应该没问题。如果您不知道格式或想要更健壮,我建议您使用来自 @987654322 的解析器@library,它有一个非常强大的解析器。

    pip install python-dateutil
    

    然后

    import dateutil.parser
    d = dateutil.parser.parse('1 Jan 2012 12pm UTC') # its that robust!
    

    【讨论】:

      猜你喜欢
      • 2019-04-25
      • 2014-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多