Developer

【Python独学】他のモジュールを使ってみる
2021.10.04
Lv1

【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)
C:\Python> python module1.py
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)
C:\Python> python module2.py
2021-08-28 00:00:00

1ヶ月後や1年後であればあまり困ることはありませんが、
30日後などの場合は、当月が28~31日までのいずれなのかを考慮して日数を計算する必要があり、
それらを手で書かないといけないとなると、億劫ですし、ミスがあったら困るので簡単に計算できるのは便利ですね。


・calendarモジュール

日付関連でもう一つ。
こちらはカレンダー関連のモジュールです。

import calendar as c

print(c.month(2021,7))
C:\Python> python module3.py
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("--含まない")
C:\Python> python module4.py
<名前に「藤」を含むかどうか>
佐藤
–含む
香川
–含まない
後藤
–含む
藤山
–含む
大田
–含まない
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("--該当しない")
C:\Python> python module5.py
<ファイル名がsssで始まって数字4桁で終わるかどうか>
sss_hoge_11
–該当しない
sss_hoge_1122
–該当する
aaa_hoge_11
–該当しない
ss_foo_1133
–該当しない
sss_hoge_1100
–該当する

まとめ

pythonには様々なモジュール用意されていたり、先人たちが公開してくれているモジュールが存在します。
それらを上手に利用することでコーディングにかかる時間を短縮したり、自作して不要なバグを生むことが少なくなります。

連載目次

独学で学ぶ Pythonプログラミング 連載目次