Форматирование дат из массива в Python - PullRequest
0 голосов
/ 22 апреля 2019

Screenshot of my code

Я пытаюсь преобразовать формат даты в массиве из «2018-03-02» (Y-m-d) в «20180302». Я думаю, что цикл for через массив дат будет меняться каждую дату, однако я получаю следующую ошибку:

TypeError: аргумент strptime () 1 должен быть str, а не списком

Я бы хотел новый массив дат, отформатированный с использованием "Y% m% d"

1 Ответ

1 голос
/ 22 апреля 2019

Здесь есть несколько вопросов. Во-первых, в первой строке кода вы фактически объявляете кортеж из трех списков, каждый из которых содержит одну строку в формате даты. Что вы, вероятно, хотите сделать, это:

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

Во-вторых, я не совсем уверен, почему вы конвертируете в простой массив; это не кажется необходимым в вашем случае использования. В-третьих, даты, как вы их указали, представляют собой строки, а не datetime, с которыми может работать библиотека datetime; честно говоря, если все ваши даты выглядят так, вам, вероятно, не нужно конвертировать их в datetime и обратно. Вы можете просто заменить «-» или «,» пустой строкой, что эффективно удалит «-» и «,» из строки. В-четвертых, вы обновляете переменную newdates только для хранения последней даты; если вы хотите, чтобы он содержал все даты, вам понадобится новый список. Наконец, в цикле for вы используете переменную даты (которая теперь является списком дат), а не дату (которая представляет собой строку с одной датой). Все вместе, это должно выглядеть так:

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

Это также можно сделать более "питонически" в понимании списка:

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