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

时间:2019-04-22 03:39:20

标签: python arrays string list strptime

Screenshot of my code

我正在尝试将数组中的日期格式从'2018-03-02'(Y-m-d)转换为'20180302'。我认为遍历date数组的for循环会更改每个日期,但是,出现以下错误:

  

TypeError:strptime()参数1必须为str,而不是列表

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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

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