はじめに
標準ライブラリをしっかり活用できていますか?
Pythonには、非常にたくさんの標準ライブラリが用意されており、インポートするだけで簡単に使えるようになっています。
安定しており、バグなどもほぼありませんので、自前でコードを書くより標準ライブラリに頼ったほうがよいでしょう。
この記事では、Python初心者の方向けに、Pythonの標準ライブラリをコードを交えて紹介していきます。
よく使う便利なモジュールばかりなので、ぜひとも覚えておきましょう。
re(正規表現)
reは、正規表現(Regular Expression)を扱うためのモジュールです。
HTMLなどの非整形文字列から、特定の文字列を探し出すために活躍します。
正規表現の内容については、前回の記事をご覧下さい。
ここでは、関数についてさらに詳しくみていきます。次の例をみて下さい。
例:
import re def printmatch(matchobject): if matchobject is None: print("マッチしませんでした") else: print(matchobject.group()) pattern = "[a-z]+@[a-z]+\.[a-z]+" text = "mail:hoge@fuga.com" matchobject = re.match(pattern, text) printmatch(matchobject) matchobject = re.search(pattern, text) printmatch(matchobject)
この例では、match関数とsearch関数の2つの方法を使って、正規表現とマッチするか調べています。
match関数は、対象の文字列の先頭からしかマッチしないため、マッチせずにNoneが返ってきます。
一方、search関数は対象の文字列のどこであってもマッチするため、マッチオブジェクトを返します。
マッチオブジェクトは、マッチした文字列の情報を持ったオブジェクトです。
ここでは、groupメソッドを使ってマッチした文字列を取り出しています。
また、次のようにfindallメソッドを使うと、複数回のマッチにも対応できます。
例:
import re pattern = "[a-z]+@[a-z]+\.[a-z]+" text = "mail:hogea@fuga.com,hogeb@fuga.com,hogec@fuga.com" for match in re.findall(pattern, text): print(match)
こちらの場合は、文字列のリストが直接返されるので注意しましょう。
datetime(日付)
プログラムでは、日付や時間を扱うこともよくあります。
そんなときは、datetimeモジュールの出番です。まずは、現在の日付を取得してみましょう。
次のようにします。
例:
import datetime today = datetime.date.today() print(today) print(today.year) print(today.month) print(today.day)
現在の日付を取得するには、todayクラスメソッドを使います。
すると、dateオブジェクトを得られるので、そのまま表示したり、年月日を数値で取得したりできます。
また、次のように時刻を含めて取得することもできます。
例:
import datetime now = datetime.datetime.now() print("{0}/{1}/{2} {3}:{4}:{5}" .format(now.year, now.month, now.day, now.hour, now.minute, now.second))
さらに、次のようにtimedeltaクラスを使って、日付の演算をすることもできます。
例:
import datetime today = datetime.date.today() yesterday = today - datetime.timedelta(days=1) print("today: {0}".format(today)) print("yesterday: {0}".format(yesterday))
timedeltaクラスは、日付の差分を表します。
この例では、1日の日付差分を作成して、今日の日付から引いています。
つまり、これで昨日の日付が求められるわけです。単純な引き算ではなく、年や月が変わる場合でもしっかり対応してくれます。
math(数学)
特に高度な数学プログラミングを行わない場合でも、mathモジュールのお世話になるでしょう。
よく使われるのは、次の2つの関数です。
例:
import math #数値を切り上げる print(math.ceil(3.14)) #数値を切り下げる print(math.floor(3.14)) #数値を四捨五入する print(round(3.4)) print(round(3.5))
注意したいのは、切り上げと切り下げはmathモジュールにありますが、四捨五入は組み込み関数として提供されていることです。用途に応じて使い分けましょう。
random(乱数)
ときには、ランダムな値を取得したい場合もあります。
Pythonでは、そのためのrandomモジュールが提供されています。
次の例をみて下さい。
例:
import random i = 0 while i < 100: print(random.randrange(1, 10)) i += 1
この例では、1から9までのランダムな数値を出力しています。何度か実行してみて、毎回結果が変わることを確認してみて下さい。
引数の数値を変えることで、任意の範囲の乱数を得ることができます。
urllib.request(ネットワーク)
Pythonは、ウェブスクレイピング(ウェブからHTMLなどを取得してデータを抜き出すこと)にもよく利用されます。
標準ライブラリだけでも、次のように簡単にウェブからHTMLなどを取得することができます。
例:
import urllib.request response = urllib.request.urlopen("http://www.yahoo.co.jp") print(response.read().decode("utf-8"))
対象のURLを指定すればいいだけなので、とても簡単にHTMLを取得できますね。
注意しなければいけないのは、対象のHTMLの文字コードを間違えるとデコードエラーになってしまうことです。
事前にブラウザなどで文字コードを確認しておきましょう。
まとめ
いかがでしたでしょうか?使えそうなライブラリは見つかりましたか?
Pythonには、他にもたくさんの標準ライブラリが用意されています。
公式ドキュメントをチェックしてみるとよいでしょう。
また、サードパーティ製の外部ライブラリも豊富です。
外部ライブラリについては、次回紹介していきます。
次回もぜひご覧下さい。