Pythonのtextwrapモジュールを使用し各行を中央揃えにする

スポンサーリンク

Pythonのtextwrapモジュールを使用し各行を中央揃えにしてみます。

今回はtextwrapを用います。このライブラリ・モジュールはPythonの標準ライブラリですので、事前にインストールする必要はありません。

■今回の環境(Python)

Google Colaboratory(Google Colab),記事作成時点ではPython 3.9.16が用いられる。

■textwrapモジュールを使用し各行を中央揃えにする

では、早速textwrapモジュールを使用し各行を中央揃えにするスクリプトを書いていきます。

■コード

import textwrap

# ラップするテキスト
text = "Python is an interpreted, high-level, general-purpose programming language. Created by Guido van Rossum and first released in 1991, Python's design philosophy emphasizes code readability with its notable use of significant whitespace."

# ラップする
wrapper = textwrap.TextWrapper(width=50)
wrapped_text = wrapper.wrap(text)

# テキストの中央揃えを行う
max_length = max([len(line) for line in wrapped_text])
for line in wrapped_text:
    print(line.center(max_length))

まずimportでtextwrapモジュールを呼び出します。呼び出した後にtextという変数を定義し、そこにラップするテキストを格納します。格納後、wrapper変数を定義し、その中でtextwrap.TextWrapper()を用います。これで、textwrap.TextWrapperオブジェクトを作成。作成時、括弧内に引数,パラメータ(width=)として「50」という数値を渡します。これにより、テキストの幅を50文字に設定されました。次に、wrapped_textという変数を定義し、その中でwrapperオブジェクトに対して(.)ドット演算子を用いてwrap()メソッドを使用します。括弧内には引数,パラメータとしてtext変数を渡します。これで指定された幅(50文字)でテキストをラップします。ラップした後、ラップされた行をリストとして返します。返されたリストが、wrapped_textに格納されます。

次にmax_length変数を定義し、その中でmax()関数を使用します。括弧内には引数,パラメータとして、[len(line) for line in wrapped_text]を渡します。これはリスト内包表記を用いてforループを使ってwrapped_textの各行にアクセスし、len()関数を使ってその文字列の長さを取得。取得したもので新しいリストが作成されています。そして、len()関数を用いることでリスト([len(line) for line in wrapped_text])の中からmax()関数を使って最大値を取得することができます。それがmax_length変数に格納されます。

格納後、wrapped_textの各行について、center()関数を使用して中央揃えの文字列を作成し、print()関数を使用してそれらを表示します。center()関数は、指定された長さに対して文字列を中央揃えにするために使用されますので、今回の指定された長さはmax_length変数内に格納された値です。これで各行が均等な幅で表示されるように調整され出力することができます。

■実行・検証

このスクリプト(セル)を保存し、Google Colaboratory上で、セルを実行してみます。

実行してみると、textwrapモジュールを使用し、今回用意したテキスト(英文)の各行を中央揃えにし、中央揃えしたテキストをprint()で出力させることができました。

コメント

タイトルとURLをコピーしました