2017-01-03 14 views
0

他の質問はすべて読み、徹底的にスクリプトをチェックしましたが、エラーはそのまま残ります。(python)datetimeを使用して日付を解析する際の通常のValueError

私のtest.txtファイルが含まれています:日/月/年、これは私のスクリプトです:

import numpy as np 
from datetime import datetime 
from matplotlib.dates import datestr2num 
datefunc = lambda x: datestr2num(datetime.strptime(x, '%d/%m/%Y')) 
values, date = np.loadtxt('test.txt', delimiter=',', unpack=True, converters = {1 : datefunc}) 

と私は

を取得した日付の順序がある

89.02 , 22/12/2016 
90.63 , 02/01/2017 

ValueError: time data ' 22/12/2016 ' does not match format '%d/%m/%Y' 

誰かに間違いがありますか?ありがとう、それは非常に高く評価されます

+4

エラーメッセージsho日付の周りにスペースがあることを確認してください。 – ThisSuitIsBlackNot

答えて

0

あなたはstrip()を使用することができ、次のいずれか

>>> datetime.strptime(x.strip(), '%d/%m/%Y') 
datetime.datetime(2016, 12, 22, 0, 0) 

またはフォーマットのparamにスペースを追加します。

>>> datetime.strptime(x, ' %d/%m/%Y ') 
datetime.datetime(2016, 12, 22, 0, 0) 
+0

迅速な回答ありがとうございます。どちらの場合でも、 'TypeError: 'datetime.datetime'オブジェクトはiterableではありません。もしそれらを組み合わせると古い' ValueError'が返されます。 – andrea

+0

'datestr2num'を' lambda'関数から削除しようとしましたが、 'TypeError:float()引数は文字列か数字でなければなりません.'私は' converters' kwargで日付に変換するように言っているので、分かりません。 – andrea

+0

組み込み関数とモジュールをオーバーライドしていないことを確認してください! – ettanany

0

日付データには余分なスペースがあります。 strptimeに渡す前に、日付文字列をストリッピングしてみてください:あなたは、文字列の前後に空白x

を持ってBcecause

datefunc = lambda x: datestr2num(datetime.strptime(x.strip(), '%d/%m/%Y')) 
関連する問題