2016-03-08 2 views
0

J'ai une liste de chaînes.créer une liste d'objets datetime en utilisant datetime.strptime

date_str = ["2012-11-04 1:05:21", "2013-11-03 1:05:21", "2014-11-02 1:07:31"] 

Je souhaite les lire en tant qu'objets datetime. Pour une chaîne, je fais

datetime.strptime(date_str[1], "%Y-%m-%d %H:%M:%S") 

mais je ne sais pas comment créer une liste d'objets datetime. Si je

datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S") 

Je reçois cette erreur:

TypeError: must be string, not list 

J'ai essayé d'utiliser une boucle:

x = datetime.strptime(date_str[0], "%Y-%m-%d %H:%M:%S") 
for i in range(1,len(date_str)): 
    x.append(datetime.strptime(date_str[i], "%Y-%m-%d %H:%M:%S")) 

mais je reçois l'erreur suivante

AttributeError: 'datetime.datetime' object has no attribute 'append' 

Est il y a un moyen de créer un liste des objets datetime?

Répondre

0

x doit être une liste:

x = [] 
for i in range(len(date_str)): 
    x.append(datetime.strptime(date_str[i], "%Y-%m-%d %H:%M:%S")) 

alors, vous pouvez ajouter tous vos objets datetime. Ou encore plus Pythonien:

x = [datetime.strptime(s, "%Y-%m-%d %H:%M:%S") for s in date_str] 
+0

Merci @schwobaseggl. J'ai essayé cela avant et quand j'imprime x, je reçois les éléments suivants: [datetime.datetime (2012, 11, 4, 1, 5, 21), datetime.datetime (2013, 11, 3, 1, 5, 21), datetime.datetime (2014, 11, 2, 1, 7, 31)] si j'imprime x [1], il me donnera le format correct. 2013-11-03 01:05:21 – ah25

+0

@AsiehHarati Oui, si vous imprimez une liste, elle utilisera la méthode 'repr' de ses éléments, et non le' str' qui est utilisé lorsque vous les imprimez directement. Vous pouvez comparer: 'print repr (x [0]), str (x [0])' – schwobaseggl