テキスト処理ツール

文字列クラスは、Python プログラマに最も分かり易いテキスト処理ツールですが、テキストをシンプルに処理するツールが標準ライブラリにはたくさんあります。

string モジュール

旧スタイルのコードは、文字列オブジェクトのメソッドではなく、 string モジュールの関数で使用できます。 string モジュールに等価な関数はありますが、今はそういった関数は非推奨です。

今は string や unicode クラスの機能以上に文字列をパラメータ化するシンプルな方法として string.Template を使用すると良いです。多くの web フレームワークで定義されるテンプレートや PyPI で利用可能な拡張モジュールと比較すると機能が十分ではないものの、 string.Template は動的な値を静的なテキストに挿入するユーザ定義テンプレートとして優れた中間層です。

テキスト入力

ファイルからの読み込みはとても簡単ですが、行単位のフィルタを書いているなら fileinput モジュールを使用するとさらに簡単です。 fileinput の API は、行単位で処理する input() が返すオブジェクトをイテレートします。そのオブジェクトはファイル名のためにコマンドライン引数を解析して扱うか、もしくは sys.stdin() から直接読み込みます。その出力はファイルやパイプラインの一部として直接実行可能な柔軟性のあるツールです。

テキスト出力

textwrap モジュールは、インデントを追加したり、他の行と同じ位置で改行を挿入するといった出力幅を制限することでパラグラフの整形を行うツールを提供します。

テキストを比較する

標準ライブラリには、string オブジェクトでサポートされる組み込みの等号やソートによる比較より高機能なテキストの比較に関連するモジュールが2つあります。 re モジュールは、パフォーマンスのためにほとんど C 言語で実装された完全な正規表現ライブラリを提供します。正規表現は、大きなデータセットから部分文字列を見つけたり、(特定文字列というよりも)パターンに対して文字列を比較したり、ちょっとした構文解析に適しています。

一方、 difflib モジュールは、テキストの部分文字列において追加、削除、変更された差異を表示します。 difflib モジュールの比較関数の出力は、時間とともにどのようにドキュメントが変更されたか等、2つの入力テキストで生じた変更に関して詳細なフィードバックをユーザへ提供します。

Bookmark and Share