前回の記事ではモジュールの使い方を学習しました。
その中ではdatetimeやrandomを使用しましたが、他にもいくつかモジュールを紹介します。
モジュール
目次
- dateutilモジュール
- calendarモジュール
- reモジュール
dateutilモジュール
前回、日付や時刻を扱うモジュールとしてdatetimeを使用しましたが、
このdateutilモジュールも日付や時刻を扱うモジュールです。
このdateutilにあるparse関数を使うことで、文字列からdatetimeオブジェクトを生成することができます。
1 2 3 4 5 6 7 8 9 | import dateutil as du today1 = du.parser.parse( '2021/07/29' ) today2 = du.parser.parse( '20210715' ) today3 = du.parser.parse( 'Tue, 9 Jul 2021' ) print (today1) print (today2) print (today3) |
2021-07-29 00:00:00
2021-07-15 00:00:00
2021-07-09 00:00:00
他にも日付の計算なども簡単に行えます。
1 2 3 4 5 6 7 8 | import deteutil as du today1 = du.parser.parse( '2021/07/29' ) # 30日後 target_day1 = today1 + du.relativedelta.relativedelta(days = + 30 ) print (target_day1) |
2021-08-28 00:00:00
1ヶ月後や1年後であればあまり困ることはありませんが、
30日後などの場合は、当月が28~31日までのいずれなのかを考慮して日数を計算する必要があり、
それらを手で書かないといけないとなると、億劫ですし、ミスがあったら困るので簡単に計算できるのは便利ですね。
・calendarモジュール
日付関連でもう一つ。
こちらはカレンダー関連のモジュールです。
1 2 3 | import calendar as c print (c.month( 2021 , 7 )) |
July 2021
Mo Tu We Th Fr Sa Su
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
他にも年間のカレンダーを表示する関数もありますが。。。。
よく使いますか?と聞かれると。。。
・reモジュール
こちらは正規表現(regular expression)を扱うためのモジュールです。
※正規表現とは。
深く書くと、沼にハマってしまうので簡単に。
「(後藤、佐藤、藤山等)名前に[藤が入る]人」や、「名前が[▲▲▲で始まって最後が数字4桁で終わる]ファイル」などを検索したい場合に使われるものです。
もちろん他にも様々なことが可能ですが、上げると切りがないのでこのくらいに。
では、実際にreモジュールを使用してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 | import re as r persons = [ "佐藤" , "香川" , "後藤" , "藤山" , "大田" ] # 様々な名前が入った配列を用意します。 print ( "<名前に「藤」を含むかどうか>" ) for person in persons: # 配列から1つずつ取り出し result = r.search( '藤' , person) # 「藤」が含まれているかチェックします print (person) if ( type (result) is r.Match): # 含まれていれば「re.Match」というオブジェクトが、含まれていなければ「None」がresultに格納されています。 print ( "--含む" ) else : print ( "--含まない" ) |
<名前に「藤」を含むかどうか>
佐藤
–含む
香川
–含まない
後藤
–含む
藤山
–含む
大田
–含まない
1 2 3 4 5 6 7 8 9 10 11 12 | import re as r file_names = [ "sss_hoge_11" , "sss_hoge_1122" , "aaa_hoge_11" , "ss_foo_1133" , "sss_hoge_1100" ] print ( "<ファイル名がsssで始まって数字4桁で終わるかどうか>" ) for file_name in file_names: result = r.match( '^sss.*[\d]{4}$' , file_name) print (file_name) if ( type (result) is r.Match): print ( "--該当する" ) else : print ( "--該当しない" ) |
<ファイル名がsssで始まって数字4桁で終わるかどうか>
sss_hoge_11
–該当しない
sss_hoge_1122
–該当する
aaa_hoge_11
–該当しない
ss_foo_1133
–該当しない
sss_hoge_1100
–該当する
まとめ
pythonには様々なモジュール用意されていたり、先人たちが公開してくれているモジュールが存在します。
それらを上手に利用することでコーディングにかかる時間を短縮したり、自作して不要なバグを生むことが少なくなります。