Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのstringモジュール徹底解説 ― 定数・capwords()・Formatter・Templateの使い方

Pythonの標準ライブラリに含まれるstringモジュールは、文字列操作に役立つ定数やクラス、そしてcapwords()というヘルパー関数を提供しています。本記事では、これらの機能を実際のコード例とともにわかりやすく解説します。

stringモジュールが提供する主な定数

stringモジュールには、よく使われる文字セットが定数として定義されています。バリデーション処理や文字種の判定などに活用できる便利な定数群です。

ascii_letters小文字と大文字の定数を連結した文字列(a〜z + A〜Z)
ascii_lowercase小文字アルファベット 'abcdefghijklmnopqrstuvwxyz'
ascii_uppercase大文字アルファベット 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
digits数字の文字列 '0123456789'
hexdigits16進数で使われる文字の文字列 '0123456789abcdefABCDEF'
octdigits8進数で使われる文字の文字列 '01234567'
punctuation句読点などの記号とみなされるASCII文字の文字列
printabledigits、ascii_letters、punctuation、whitespaceを合わせた印刷可能なASCII文字の文字列
whitespace空白文字とみなされるすべてのASCII文字(スペース、タブ、改行、復帰、フォームフィード、垂直タブ)を含む文字列

実行例

各定数をインタラクティブシェルで確認してみましょう。

>>> import string
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'
>>> string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.digits
'0123456789'
>>> string.hexdigits
'0123456789abcdefABCDEF'
>>> string.octdigits
'01234567'
>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
>>> string.whitespace
' \t\n\r\x0b\x0c'

capwords() 関数

capwords()関数は、渡された文字列に対して以下の処理を行います。

  • str.split() を使って文字列を単語ごとに分割する

  • str.capitalize() で各単語の先頭を大文字に変換する

  • str.join() で変換後の単語を再び1つの文字列に結合する

使用例

>>> text='All animals are equal. Some are more equal'
>>> string.capwords(text)
'All Animals Are Equal. Some Are More Equal'

このように、英文の見出しやタイトルを整形したい場合に手軽に利用できます。

Formatter クラス

Pythonの組み込みstrクラスには、文字列を整形するためのformat()メソッドが用意されています。Formatterオブジェクトも同様の動作をします。このクラスを継承(サブクラス化)することで、独自のカスタムフォーマッターを作成できる点が特徴です。

>>> from string import Formatter
>>> f=Formatter()
>>> f.format('name:{name}, age:{age}, marks:{marks}', name='Rahul', age=30, marks=50)
'name:Rahul, age:30, marks:50'

Template クラス

Templateクラスは、文字列テンプレートを作成するためのクラスです。$nameのようなシンプルな記法でプレースホルダーを定義でき、簡単な文字列置換処理に非常に便利です。

>>> from string import Template
>>> text='My name is $name. I am $age years old'
>>> t=Template(text)
>>> t.substitute(name='Rahul', age=30)
'My name is Rahul. I am 30 years old'

まとめ

stringモジュールを活用すれば、文字セットの取得、英字の大文字小文字変換、文字列のフォーマット、テンプレート置換といった定番の文字列操作を効率的に行えます。特にユーザー入力のバリデーションや、メール文面などのテンプレート生成の場面で威力を発揮するので、ぜひ活用してみてください。

  1. Pythonのブール演算入門|and・or・notの基本と動作を解説

    Pythonにおけるブール演算の基本 Pythonには、条件分岐や繰り返し処理で欠かせない基本的なブール(論理)演算として、and、or、not の3種類が用意されています。これらの演算子は真偽値(True / False)だけでなく、任意の値やオブジェクトに対して使用できるのが特徴です。 and 演算子 x and y の形式で記述します。x が偽(false)と評価される場合は x をそのまま返し、そうでなければ y を返します。つまり、左側の値が真である場合にのみ、右側の値が結果となります。 or 演算子 x or y の形式で記述します。x が偽と評価される場合は y を返し、そう

  2. Pythonの文字列操作入門|作成・インデックス・スライス・フォーマットの基本をわかりやすく解説

    文字列はPythonにおける最も基本的なデータ型のひとつです。英字・数字・記号など、任意の文字を組み合わせたものが文字列として扱われます。このチュートリアルでは、文字列の作成方法から、インデックスやスライスによる操作、フォーマットの使い方まで、さまざまな場面で役立つ基本操作を体系的に解説します。 Pythonで新しい文字列を作成する Pythonで文字列を作成するのはとても簡単です。シングルクォート()またはダブルクォート()で文字の並びを囲むだけで宣言できます。また、複数行にわたる長い文字列を作りたい場合は、トリプルクォート( または )を使用します。 double_quotes = My