【Python独学】他のモジュールを使ってみる
前回の記事ではモジュールの使い方を学習しました。
その中ではdatetimeやrandomを使用しましたが、他にもいくつかモジュールを紹介します。
モジュール
目次
- dateutilモジュール
- calendarモジュール
- reモジュール
dateutilモジュール
前回、日付や時刻を扱うモジュールとしてdatetimeを使用しましたが、
このdateutilモジュールも日付や時刻を扱うモジュールです。
このdateutilにあるparse関数を使うことで、文字列からdatetimeオブジェクトを生成することができます。
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
他にも日付の計算なども簡単に行えます。
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モジュール
日付関連でもう一つ。
こちらはカレンダー関連のモジュールです。
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モジュールを使用してみましょう。
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("--含まない")
<名前に「藤」を含むかどうか>
佐藤
–含む
香川
–含まない
後藤
–含む
藤山
–含む
大田
–含まない
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には様々なモジュール用意されていたり、先人たちが公開してくれているモジュールが存在します。
それらを上手に利用することでコーディングにかかる時間を短縮したり、自作して不要なバグを生むことが少なくなります。