如何将列表中的元素转换为时间格式:%m/%d

问题描述 投票:0回答:1

我将 excel 文件中的一列提取为列表,并尝试提取每个元素的前 8 个子元素并将数字转换为时间格式 %m/%d。

下面是我的代码:

from openpyxl import load_workbook
from datetime import datetime

wb = load_workbook("Book1.xlsx")
ws = wb['Sheet1'] 
column = ws['D']
column_list = [column[x].value for x in range(len(column))]
my_list = column_list[2:]

list_1 = [ x[0:8] for x in my_list ]
list_2 = []
for a in list_1:
    date = datetime.strptime(a, '%y%m%d').strftime('%m/%d')
    list_2.append(date)
print(list_2)

目标栏目:

['20220425 Mon', '20220425 Mon', '20220425 Mon', '20220425 Mon', '20220425 Mon', '20220425 Mon', '20220425 Mon', '20220425 Mon', '20220425 Mon', '20220425 Mon', '20220425 Mon', '20220425 Mon', '20220425 Mon', '20220425 Mon', '20220425 Mon', '20220425 Mon', '20220425 Mon', '20220425 Mon', '20220425 Mon', '20220426 Tue', '20220426 Tue', '20220426 Tue']

它完美地将每个元素的前 8 个子元素附加到一个新列表中。

['20220425', '20220425', '20220425', '20220425', '20220425', '20220425', '20220425', '20220425', '20220425', '20220425', '20220425', '20220425', '20220425', '20220425', '20220425', '20220425', '20220425', '20220425', '20220425', '20220426', '20220426', '20220426']

但是,我无法将元素转换为日期格式 %m/%d。

出现错误:

    tt, fraction, gmtoff_fraction = _strptime(data_string, format)
  File "C:\Program Files\Python39\lib\_strptime.py", line 352, in _strptime
    raise ValueError("unconverted data remains: %s" %
ValueError: unconverted data remains: 425

对于我期望的输出列表应该是:

['04/25', '04/25', '04/25', '04/25', '04/25', '04/25', '04/25', '04/25', '04/25', '04/25', '04/25', '04/25', '04/25', '04/25', '04/25', '04/25', '04/25', '04/25', '04/25', '04/26', '04/26', '04/26'.....]
>>> 
python excel list element
1个回答
0
投票

您使用的日期格式需要 2 位数年份,而不是数据中的 4 位数年份。尝试在 strptime

 中更改 
'%y%m%d'
 -> 
'%Y%m%d'

这里是 python 日期格式化代码的完整列表以供参考:https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes

© www.soinside.com 2019 - 2024. All rights reserved.