2016-11-04 22 views
0

我有被列爲串傳輸列表字符串值DATATIME格式

s = ["19 Nov 2015 18:45:00.000","19 Nov 2015 18:45:00.000"] 

現在我想將它們轉換爲strptime格式幾個DATATIME值。隨着一個單一的價值,我會做這樣的:

d = datetime.datetime.strptime(s, "%d %b %Y %H:%M:%S.%f") 

然而,當我嘗試這個

results = [datetime.strptime(s, "%d %b %Y %H:%M:%S.%f") for s in results] 

我收到以下錯誤:

Traceback (most recent call last): 
File "sample19.py", line 5, in <module> 
results = [datetime.datetime.strptime(s, "%d %b %Y %H:%M:%S.%f") for i in s] 
TypeError: must be string, not list 

在我去的地方有什麼想法錯誤?

+1

它看起來像運行的代碼行比你寫的不同。保存你的源代碼文件,然後再試一次 – Leva7

+0

我認爲你的變量名有問題,'s'用作列表和變量來遍歷列表。請更換。它會工作。 –

回答

2

你簡直是列表理解錯了。
有了這個名單

string_dates = ["19 Nov 2015 18:45:00.000", "19 Nov 2015 18:45:00.000"] 

將其轉換爲datetime對象,像這樣:因爲你傳遞s到strptime,當你的意思是通過i

results = [datetime.datetime.strptime(date, "%d %b %Y %H:%M:%S.%f") for date in string_dates] 

您的代碼沒有工作。這是好的變量名稱派上用場的地方

3

你的代碼應該是

results = [datetime.datetime.strptime(i, "%d %b %Y %H:%M:%S.%f") for i in s] 

這將使用元素,而不是完整的列表