gologiusの巣

プログラミングなどの技術メモです。誰かの役に立てるとうれしいです。

【Python】datetime.strptime で エラー 「unconverted data remains:」 が発生した場合

背景

Gmailの取得をPythonで開発していました。

取得できる受信日は以下のようなフォーマットで取得できます

Fri, 9 Nov 2018 20:37:10 

String型なのでDate型で色々したいわけですよ。

Pythonでは以下のような方法で「文字列→Date型(厳密には違いますが)」ができます。

lastTimeStr = 'Fri 9 Nov 2018 20:37:10 '
lastitime = datetime.datetime.strptime(lastTimeStr, "%a %d %b %Y %H:%M:%S")

※dateutilなど別の方法でもできます。

問題

以下のエラーが発生しました

ValueError: unconverted data remains:  

なぜでしょうか

原因と解決方法

  • 末尾にスペースが入っていたから
  • カンマが入っていたから

なので以下のように文字を消してあげると正常に動きます。

lastTimeStr = 'Fri, 9 Nov 2018 20:37:10 '
lastTimeStr = lastTimeStr.replace(",", "") #カンマ削除
if lastTimeStr[-1] == " ":
    lastTimeStr = lastTimeStr[:-1] #末尾にスペースが含まれていれば無視する

lastitime = datetime.datetime.strptime(lastTimeStr, "%a %d %b %Y %H:%M:%S")

ちなみに上記のエラー、remains:の後に問題になっている文字が表示されるようですが、 スペースなので、表示されていないように見えていたわけですね。