(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Python】TypeError: argument of type 'datetime.timedelta' is not iterableを回避する

スポンサーリンク

事象

Pythonにて日付の比較情報が入った変数(td)に対して

3 days, 19:30:47.170090

if文で部分一致をしかけるとエラーとなる

if 'days' in td:

エラーとなる。

Traceback (most recent call last):
  File "test.py", line 37, in <module>
    if 'days' in td:
TypeError: argument of type 'datetime.timedelta' is not iterable
環境情報
Python 2.7.13

原因/解決策

datetimeに対して文字列操作を行ったため。

よって以下のようにdatetimeを文字列に変換した上で

td_s=str(td)

if文の中に入れることで正常に処理される。

if 'days' in td_s:

以下、補足です。

補足

ツイートの時刻情報と現在の時刻情報の差分が1日以上離れているものを削除する際に利用しました。

#coding: UTF-8
import sys
import datetime
import tweepy
...
for tweet in tweets:
  dt1 = tweet.created_at
  td = dt_now - dt1
  td_s=str(td)
  if 'days' in td_s:
    api.destroy_status(tweet.id)

日付の差分データは以下のように出力されるので

18:23:56.170090
3 days, 19:30:47.170090
47 days, 22:17:50.170090

daysの有無で判定しました。