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

Pythonのtextwrapでテキストを指定した幅wの段落に折り返す方法

文字列 s と幅 w が与えられたとき、そのテキストを幅 w の段落に折り返して整形したいケースはよくあります。Pythonでは、標準ライブラリ textwrap に含まれる fill() 関数を使えば、この処理を非常に簡単に実現できます。まずは textwrap ライブラリをインポートしましょう。

たとえば、入力が次のようになっているとします。

  • s = "The quick brown fox jumps over the lazy dog"

  • w = 9

この場合、出力は以下のようになります。

The quick
brown fox
jumps
over the
lazy dog

解決の手順

この問題は、次の手順で解決できます。

  • 文字列を変数 s に格納する

  • 幅を変数 w に格納する

  • 第1引数に s、第2引数に w を渡して textwrap.fill(s, w) を呼び出す

fill() 関数は、指定された幅を超えないように単語の境界で改行を挿入し、整形済みの文字列を1つ返してくれます。単語の途中で切られることはないため、英文テキストの段落整形に特に便利です。

実装例

それでは、実際のコードを見て理解を深めましょう。

import textwrap

def solve(s, w):
    return textwrap.fill(s, w)

s = "The quick brown fox jumps over the lazy dog"
w = 9
print(solve(s, w))

入力

"The quick brown fox jumps over the lazy dog", 9

出力

The quick
brown fox
jumps
over the
lazy dog

補足:fill()とwrap()の違い

textwrapモジュールには、似た機能を持つ wrap() 関数もあります。wrap() は各行を要素とするリストを返すのに対し、fill() は改行文字(\n)で連結された1つの文字列を返します。出力形式に応じて使い分けるとよいでしょう。

  1. Pythonで指定されたインデックスに基づいて文字列をシャッフルする方法

    文字列 s とインデックスのリスト ind が与えられ、両者は同じ長さであるとします。文字列 s は、位置 i にある文字が最終的な文字列内の ind[i] の位置へ移動するようにシャッフルされます。このとき、シャッフル後の最終的な文字列を求める必要があります。例えば、入力が s = ktoalak、ind = [0,5,1,6,2,4,3] の場合、出力は kolkata となります。解決手順この問題を解くには、以下の手順に従います。fin_str を s と同じサイズのリストとして作成し、0で初期化するs 内の各インデックス i と各文字 v に対して、次の操作を行うfin_str[ind

  2. Pythonによるデータ分析と可視化入門!pandas・matplotlibの使い方を解説

    このチュートリアルでは、Pythonのpandasやmatplotlibなどのモジュールを使ったデータ分析と可視化の方法を学びます。Pythonはデータ分析に非常によく適した言語です。まずは以下のコマンドでpandasとmatplotlibをインストールしましょう。 pip install pandas pip install matplotlib インストールが完了すると成功メッセージが表示されます。まずpandasについて学び、その後でmatplotlibを見ていきましょう。 pandasとは pandasはPythonのオープンソースライブラリで、データ分析のための豊富なツールを提供し