16

I have read an array of strings from a TXT file and saved it as an array (of over thousand values) using such a line:

dates = np.genfromtxt('filename.txt', delimiter=";", usecols=(0), dtype=None)

Next, I would like to convert strings into dates. I tried to use the line:

dates2 = dt.datetime.strptime([dates], '"%Y-%m-%d"').date()

however, I got an error:

TypeError: must be string, not list

I figured out that such a code works fine:

data1='"2010-02-28"'
data1_1 = dt.datetime.strptime(data1, '"%Y-%m-%d"').date()

How should I deal with the described problem?

kaksat
  • 709
  • 1
  • 7
  • 18

2 Answers2

34

Note to future readers: Please do not edit this answer. '"%Y-%m-%d"' is not a mistake. OP's dates are surrounded by quotes.


dates is a list of strings. So if you want to create a list of dates from its elements:

dates_list = [dt.datetime.strptime(date, '"%Y-%m-%d"').date() for date in dates]

This line iterates over the strings in the dates list and using list comprehension to create a new list of dates.

DeepSpace
  • 78,697
  • 11
  • 109
  • 154
1

You can use split for faster result:

from datetime import datetime
today = datetime.now().strftime("%Y-%m-%d").split('-')
Nimantha
  • 6,405
  • 6
  • 28
  • 69
PouriaDiesel
  • 660
  • 8
  • 11