[英]Python- Iterating through a list using datetime.strptime
我在列表中有一個日期的文本文件,如下所示:
values1 = ['1999-02-11', '1999-02-10', '1999-02-09', '1999-02-08', '1999-02-05',
'1999-02-04', '1999-02-03', '1999-02-02', '1999-02-01', '1999-01-29',
'1999-01-28', '1999-01-27', '1999-01-26', '1999-01-25', '1999-01-22',
'1999-01-21', '1999-01-20', '1999-01-19', '1999-01-18', '1999-01-15',
'1999-01-14', '1999-01-13', '1999-01-12', '1999-01-11', '1999-01-08',
'1999-01-07', '1999-01-06', '1999-01-05', '1999-01-04']
我想做的是遍歷每個值,使用此代碼使用datetime
獲得格式。 然后,這應該允許我將日期列表與值列表相對應。
我正在嘗試在以下幾行代碼中執行此操作(這僅僅是為了將列表設置為正確的格式,我還沒有獲得繪制圖表的代碼!)
for line in values1:
datetime.strptime(line, '%Y-%m-%d').date()
但這給了我以下錯誤:
ValueError: time data 'Date' does not match format '%Y-%m-%d'
我不確定為什么嗎?
ValueError:時間數據“日期”與格式“%Y-%m-%d”不匹配
您說您正在從文件中讀取日期列表。 可能其中之一是日期單詞而不是日期值,或者可能是標題行。
您提供的代碼有效。 檢查文件中的輸入值
由於文本文件中的標題會導致錯誤,因此我設法使其正常工作!
values1=calues1[1::] for line in values1: datetime.strptime(line, '%Y-%m-%d').date()
如錯誤所說
ValueError: time data 'Date' does not match format '%Y-%m-%d'
您說您正在從文件中讀取日期列表。 可能其中之一是Date
單詞而不是日期值,或者可能是標題行。
您提供的代碼有效。 檢查文件中的輸入值
該代碼對我有用
from datetime import datetime
values1 = ['1999-02-11', '1999-02-10', '1999-02-09', '1999-02-08', '1999-02-05', '1999-02-04', '1999-02-03', '1999-02-02', '1999-02-01', '1999-01-29', '1999-01-28', '1999-01-27', '1999-01-26', '1999-01-25', '1999-01-22', '1999-01-21', '1999-01-20', '1999-01-19', '1999-01-18', '1999-01-15', '1999-01-14', '1999-01-13', '1999-01-12', '1999-01-11', '1999-01-08', '1999-01-07', '1999-01-06', '1999-01-05', '1999-01-04']
for line in values1:
print datetime.strptime(line, '%Y-%m-%d').date()
輸出量
1999-02-11
1999-02-10
1999-02-09
1999-02-08
1999-02-05
1999-02-04
也許您的問題是導入。
ps python 2.7
確保您具有從datetime模塊導入的datetime對象(以下代碼段的第一行):
>>> from datetime import datetime
>>>
>>> values1 = ['1999-02-11', '1999-02-10', '1999-02-09', '1999-02-08', '1999-02-05', '1999-02-04', '1999-02-03', '1999-02-02', '1999-02-01', '1999-01-29', '1999-01-28', '1999-01-27', '1999-01-26', '1999-01-25', '1999-01-22', '1999-01-21', '1999-01-20', '1999-01-19', '1999-01-18', '1999-01-15', '1999-01-14', '1999-01-13', '1999-01-12', '1999-01-11', '1999-01-08', '1999-01-07', '1999-01-06', '1999-01-05', '1999-01-04']
>>>
>>> for line in values1:
... x = datetime.strptime(line, '%Y-%m-%d').date()
... print x
...
1999-02-11
1999-02-10
1999-02-09
1999-02-08
1999-02-05
1999-02-04
1999-02-03
1999-02-02
1999-02-01
1999-01-29
1999-01-28
1999-01-27
1999-01-26
1999-01-25
1999-01-22
1999-01-21
1999-01-20
1999-01-19
1999-01-18
1999-01-15
1999-01-14
1999-01-13
1999-01-12
1999-01-11
1999-01-08
1999-01-07
1999-01-06
1999-01-05
1999-01-04
我認為問題出在您的進口上。 您必須在datetime內導入datetime模塊。
使用以下任一方法:
import datetime
for line in values1:
print datetime.datetime.strptime(line, '%Y-%m-%d').date()
要么
from datetime import datetime
for line in values1:
print datetime.strptime(line, '%Y-%m-%d').date()
在python 2.7和3上都可以使用(使用print()代替python 3)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.