はじめに

標準ライブラリをしっかり活用できていますか?

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には、他にもたくさんの標準ライブラリが用意されています。
公式ドキュメントをチェックしてみるとよいでしょう。
また、サードパーティ製の外部ライブラリも豊富です。

外部ライブラリについては、次回紹介していきます。
次回もぜひご覧下さい。