簡體   English   中英

Python-使用datetime.strptime遍歷列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM