在Python中格式化数组中的日期

问题描述 投票:-2回答:1

我试图将数组中的日期格式从'2018-03-02'(Y-m-d)转换为'20180302'。我认为通过日期数组的for循环会改变每个日期,但是,我收到以下错误:

TypeError:strptime()参数1必须是str,而不是list

我想要一个新的日期数组,使用“Y%m%d”格式化

python arrays string list strptime
1个回答
1
投票

这里有一些问题。首先,在第一行代码中,您实际上是在声明三个列表的元组,每个列表都包含一个日期格式的字符串。你可能想做的是:

dates = ["2019-04-21", "2018-03-05", "2016,01,01"]

其次,我不完全确定你为什么要转换成一个numpy阵列;在您的用例中似乎没有必要。第三,正如您提供的那样,日期是字符串,而不是日期时间库可以使用的日期时间;老实说,如果你所有的日期都是这样,你可能不需要将它们转换为日期时间和返回。您可以用空字符串替换“ - ”或“,”,这将有效地从字符串中删除“ - ”和“,”s。第四,你只是更新newdates变量来保存最后一个日期;如果你想要它保存所有日期,你将需要一个新的列表。最后,在for循环中,您使用的是日期变量(现在是日期列表)而不是日期(这是一个日期字符串)。全部放在一起,这应该是这样的:

newdates = []
for date in dates:
  newdates.append(date.replace("-","").replace(",","")

这也可以在列表理解中更“诡异”地完成:

newdates = [date.replace("-","").replace(",","") for date in dates]
© www.soinside.com 2019 - 2024. All rights reserved.