数字だけど文字列だから、フォーマット化できないって

SIRIUS記事の投稿日をWordPress記事の投稿日へ反映させるための対応。

SIRIUSのテンプレートに<% pagePublicDate %>を入れて、記事中に投稿日を表示させ、それをスクレイプしてWordPressの投稿日に設定してあげる。

ただしWordPressの日時の指定方法はISO8601形式(yyyy-MM-ddThh:mm:ss)なので、ちょっと形を変えてあげないといけない。
(SIRIUSはyyyy/MM/dd hh:mm:ss)

日付の区切りを’/’から’-‘に変えてあげるだけで済むと思った。

そしたら、記事によって形式がおかしいと投稿でレスポンス400が返ってきてエラーになる。

調べてみると、時刻の時が一桁の場合(9時とか)、hhじゃなくてhで表示されている。
ISO8601形式はhhじゃないとダメらしい。

ってことで、フォーマット化して一桁の場合は0パディングしてあげようとこうした。

[h, m, s] = posttime.split(':')
formatedposttime = f'{h:02}:{m:02}:{s:02}'

そしたらフォーマット化するところでエラーになる。
‘=’はフォーマット化した文字列がなんたら…って。

「だからPythonの文字列ってわかんないんだよー」

ってしばし困っていたら、気がついた。

hもmもsもそもそも文字列なのね…と。
数字だけど文字列だよね。

これってPythonがどうという問題じゃなく、ただのおマヌケな間違い。
ということで、こう修正してうまくいきました。

[h, m, s] = posttime.split(':')
formatedposttime = f'{int(h):02}:{int(m):02}:{int(s):02}'

この処理いれるのに、久しぶりにBeautifulSoupさんも使った。

コメント

タイトルとURLをコピーしました