複雑なテキストをパディングする

ウェブサイトなどから取得した日付データに表記のゆれがあることがある。日付や時間や分や秒の数値は、一桁で「2022年1月1日」と表現する場合と二桁で「2022年01月01日」と表現する場合がありどちらも一般的であるためにウェブサイトによって表記が異なることも多い。特に一桁の表現である場合にはソートができないので困ることがある。例えば一桁の日付の表現のデータをソートすると1月10日よりも後ろに1月2日が並んでしまう。これを直したいときにはアクション「テキストのパディング」を使うことがあるだろう。

f:id:yujihb:20211220011841j:plain

一方でウェブサイトから取得するテキストが複雑でテキストの中央部にパディングしたい対象の部分があったりすると、パディングするために非常に多くの「テキストの解析」や「サブテキストの取得」アクションが必要となり、フローが煩雑になってとても目にわるい。そんなときはPythonスクリプトなどを利用してアクション一行でまとめてしまいたい。

例えばウェブサイトから取得したテキストが「2022年1月1日」という形式で、これをパディングして「2022年01月01日」に直したいときのサンプル。「月」と「日」の位置をfindで取得して、その間の数値部分をzfillするもの。「テキストの解析」や「サブテキストの取得」アクションで実装するといったい何行になってしまうだろう。

 s = '%NewVar%'
pos1 = s.find('月')
pos2 = s.find('日')
print s[0:5] + s[5:pos1].zfill(2) + '月' + s[pos1+1:pos2].zfill(2) + s[pos2:]

f:id:yujihb:20211220011947j:plain