为了账号安全,请及时绑定邮箱和手机立即绑定

如何从列表中选择交替值以转换为日期时间?

如何从列表中选择交替值以转换为日期时间?

一只甜甜圈 2023-09-26 16:58:54
我目前正在学习字符串方法。但是,我遇到了这个问题,出现了 ValueError。我有一个名为列表的列表,result_list其中行的第一个索引是日期/时间戳,第二个索引是评论数。我被要求执行以下操作:从日期中提取小时,这是该行的第一个元素。使用该datetime.strptime()方法解析日期并创建日期时间对象。from datetime import datetime# here is your list of valuesresult_list = ['8/16/2016 9:55', '6.0', '11/22/2015 13:43', '29.0']# set the formatdate_format = '%m/%d/%Y %H:%M'for row in result_list:    time = row[0]    time_dt = datetime.strptime(time, date_format)错误---------------------------------------------------------------------------ValueError                                Traceback (most recent call last)<ipython-input-6-ecf5afb3f99e> in <module>      9 for row in result_list:     10     time = row[0]---> 11     time_dt = datetime.strptime(time, date_format)e:\Anaconda3\lib\_strptime.py in _strptime_datetime(cls, data_string, format)    566     """Return a class cls instance based on the input string and the    567     format string."""--> 568     tt, fraction, gmtoff_fraction = _strptime(data_string, format)    569     tzname, gmtoff = tt[-2:]    570     args = tt[:6] + (fraction,)e:\Anaconda3\lib\_strptime.py in _strptime(data_string, format)    347     found = format_regex.match(data_string)    348     if not found:--> 349         raise ValueError("time data %r does not match format %r" %    350                          (data_string, format))    351     if len(data_string) != found.end():ValueError: time data '8' does not match format '%m/%d/%Y %H:%M'我假设我收到错误是由于datetime.strptime()构造函数期望值为 08 而不是 8。但是,我不确定从哪里开始解决此问题。
查看完整描述

1 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

result_list是一个平面列表,没有组,索引 0 处的值的 ,row[0]也是如此。8

将日期值正确转换为日期时间后,请使用各种方法(例如 ).hour来提取所需的值。

一种选择是使用列表理解对日期和相关评论计数进行分组。

from datetime import datetime


# here is your list of values

result_list = ['8/16/2016 9:55', '6.0', '11/22/2015 13:43', '29.0']


# set the format

date_format = '%m/%d/%Y %H:%M'


# group each date and count together

rl_updated1 = [result_list[k:k+2] for k in range(0, len(result_list), 2)]


print(rl_updated1)

[out]:

[['8/16/2016 9:55', '6.0'], ['11/22/2015 13:43', '29.0']]


# convert to a datetime format in a list comprehension

rl_updated2 = [[datetime.strptime(v[0], date_format), v[1]] for v in rl_updated1]


print(rl_updated2)

[out]:

[[datetime.datetime(2016, 8, 16, 9, 55), '6.0'],

 [datetime.datetime(2015, 11, 22, 13, 43), '29.0']]


# alternatively, iterate through rl_updated1, before converting to a date format

for group in rl_updated1:

    dt = group[0]

    dt = datetime.striptime(dt, date_format)

保持平面列表,并从索引中选择日期,其中i % 2 == 0

for i, v in enumerate(result_list):

    if i%2 == 0:

        time_dt = datetime.strptime(v, date_format)

        print(time_dt)

    else:

        comment = v

        print(v)


[out]:

2016-08-16 09:55:00

6.0

2015-11-22 13:43:00

29.0


查看完整回答
反对 回复 2023-09-26
  • 1 回答
  • 0 关注
  • 64 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信