はじめに
- 開発中の日付データをtimestampへ変換するためにparser関数を利用した。
- あまり馴染みがなかったため、調べてみた。
parseとは
- まず英単語としての
parse
とは「解析する。分割する」という意味。 - 語源は、古フランス語のpart「分け前、部分...」、ラテン語partem(主格はpars)「一部、一片...」など。
parserを使った日付の変換
- parserについては述べると膨大になりそうなため、今回は仕事で用いた「日付の変換」のみを扱いたいと思います。
- parse関数を利用して文字列の日付(正規表現)をdatetimeに変換しています。
- datetime型なので、月や年での抽出、タイムスタンプへの変換が可能です。
>>> from dateutil.parser import parse
>>> str = "2023-12-31 15:30:45"
>>> print(str)
2023-12-31 15:30:45
>>> print(type(str))
<class 'str'>
>>> dt_parse = parse(str)
>>> print(dt_parse)
2023-12-31 15:30:45
>>> print(dt_parse.year)
2023
>>> print(dt_parse.month)
12
>>> print(type(dt_parse))
<class 'datetime.datetime'>
>>> print(dt_parse.timestamp() )
1704004245.0
parserを使うと良いこと
- parseを使う大きな目的は「引数解析」となります。
- chatgptに引数解析の目的を伺ってみました。
- プログラムの挙動の制御: 引数の解析により、プログラムの実行時にユーザーがコマンドラインから引数を指定できるようになります。これにより、プログラムの挙動を柔軟に制御できるようになります。例えば、コマンドライン引数で指定したファイルを処理するか、モードを切り替えるか、出力の形式を変更するかなどのオプションを設定することが可能です。
- プログラムのパラメータの指定: プログラムには、実行時に必要なパラメータやデータがある場合があります。これらのパラメータを引数として渡すことで、プログラムが適切に動作するようになります。例えば、ファイルパス、データベースの接続情報、処理の設定などが該当します。
- ユーザーに対する使いやすさと効率性の向上: 引数の解析により、ユーザーがスクリプトやプログラムを実行する際に、具体的なオプションや引数を指定することが容易になります。ユーザーがコマンドラインヘルプを参照してどのような引数が利用可能かを確認し、それに基づいてスクリプトの実行を行うことができます。これにより、プログラムの使いやすさと効率性が向上します。
- 再利用性の向上: 引数の解析を行うことで、プログラムを別のプロジェクトや環境に移植しやすくなります。コマンドライン引数を使用することで、同じプログラムを異なる設定やパラメータで実行することが容易になります。
- 私の解釈では、引数解析の目的は「ユーザーに想定通りの動きへ導くこと」かと思っています。
argparse関数に関して
- pythonでは標準ライブラリに含まれるargparseモジュールのクラスや関数が引数解析に用いられます。
- argparseを使うことで、コマンドライン引数を簡単に解析でき、ヘルプメッセージを表示できることで、ユーザビリティを高めることが可能となります。
おわりに
- argparse関数を利用したscriptを作ってみたいと思います。