本文へスキップ
BecomeCoder

Pythonコース · 第8章 Python の道具箱 ― もっと便利に、もっと実務らしく · レッスン30

標準ライブラリツアー ― 「電池付属」を体感する

ブラウザで完結

導入

Python は「バッテリー同梱(batteries included)」と言われるほど、標準ライブラリ(追加インストールなしで使える機能)が充実しています。第6章で mathrandom に触れましたが、ここでは日付、正規表現、コレクション操作まで一気に見て回ります。

説明

datetime は日付・時刻を扱うモジュールです。

import math
import datetime

print(math.sqrt(2))
print(round(math.pi, 2))

today = datetime.date(2024, 4, 1)
nextday = today + datetime.timedelta(days=30)
print(nextday)

today + datetime.timedelta(days=30) のように、日付どうしの足し算・引き算ができます。手で「何月何日か」を計算しなくてよいので便利です。

re(正規表現)は、文字列から特定のパターンを探したり抜き出したりするモジュールです(正規表現そのものの詳しい書き方は別の教材で扱います)。

import re

text = "注文番号: A1234, B5678"
codes = re.findall("[A-Z]\\d+", text)
print(codes)

m = re.match("(\\d{4})-(\\d{2})-(\\d{2})", "2024-04-01")
print(m.group(1), m.group(2), m.group(3))

re.findall(パターン, 文字列) はパターンに合う部分をすべてリストで返します。re.match は文字列の先頭がパターンに合うか調べ、合えば () で囲んだ部分(グループ)を .group(番号) で取り出せます。

collections は、標準の listdict を少し便利にした型を集めたモジュールです。Counter は「数える」専用の辞書、defaultdict は「キーが無いときの初期値」を自動で用意してくれる辞書です。

from collections import Counter, defaultdict

votes = ["A", "B", "A", "C", "B", "A"]
print(Counter(votes))

groups = defaultdict(list)
groups["fruit"].append("apple")
groups["fruit"].append("banana")
print(dict(groups))

Counter(votes) は「集計」を一発でやってくれます。defaultdict(list)groups["fruit"] に何も入っていなくても、最初のアクセス時に自動で空リストを用意してくれるので、if "fruit" not in groups: groups["fruit"] = [] のような前準備が要りません。

やってみよう

text の中身や re.findall のパターンを変えたり、votes の中身を変えて集計結果がどう変わるか確かめましょう。

演習

from collections import Counter を使い、"cat dog cat bird dog cat".split() で作った単語のリストを Counter に渡して、その結果を表示してください(結果は Counter({'cat': 3, 'dog': 2, 'bird': 1}))。

ヒント1を見る

words = "cat dog cat bird dog cat".split() で単語のリストを作ります。

ヒント2を見る

print(Counter(words)) で表示します。

実際に動かしてみよう

下のエディタにPythonを書いて「実行」を押すと、ブラウザ内のPythonで出力が表示されます。本文の例をそのまま試したり、書き換えたりしてみましょう(input() を使う回は「標準入力」欄に値を入れてから実行します)。

Python — ブラウザ内で実行

ブラウザ内でPythonを動かす環境(Skulpt)を読み込みます(初回のみ少し時間がかかります)。
スクロールして表示された時点でも自動で読み込まれます。