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

Pythonの出力フォーマット徹底解説!%演算子・format()・f文字列の使い方

プログラムの出力結果を表示する方法は複数あります。データを人間が読みやすい形式で画面に表示したり、後で利用できるようにファイルへ書き出したりすることが可能です。単にスペース区切りの値を出力するだけでは物足りず、より細かく出力フォーマットを制御したい場面も多くあります。

Pythonには、出力を整形するための主な方法として以下の3つが用意されています。

  • f文字列(フォーマット済み文字列リテラル):文字列の開始引用符や三重引用符の直前に「f」または「F」を付けて使用します。
  • str.format()メソッド:文字列に対して使えるメソッドで、より柔軟で洗練された出力を実現できます。
  • 文字列スライシングと連結操作:文字列操作をすべて手動で行い、任意のレイアウトを作成する方法です。指定した桁幅に文字列をパディング(埋め込み)する便利なメソッドも用意されています。

%演算子(文字列モジュロ演算子)による出力フォーマット

「%」演算子を使っても文字列の整形が可能です。左側の引数をprintf()スタイルの書式指定文字列として解釈し、右側の引数に適用します。C言語に慣れている方には馴染み深い記法です。

サンプルコード

# 文字列モジュロ演算子(%)による出力
# 整数と浮動小数点数の表示
print("Vishesh : % 2d, Portal : % 5.2f" %(1, 05.333))
# 整数値の表示
print("Total students : % 3d, Boys : % 2d" %(240, 120))
# 8進数の表示
print("% 7.3o"% (25))
# 指数表記の表示
print("% 10.3E"% (356.08977))

実行結果

Vishesh : 1, Portal : 5.33
Total students : 240, Boys : 120
031
3.561E+02

このように、「%d」は整数、「%f」は浮動小数点数、「%o」は8進数、「%E」は指数表記を意味し、桁数や小数点以下の精度を自由に指定できます。

format()メソッドによる出力フォーマット

format()メソッドはPython 2.6で追加されました。このメソッドでは、変数を置き換える位置を「{}」でマークし、詳細な書式指定ディレクティブを提供できますが、整形対象の情報も自分で渡す必要があります。

辞書と組み合わせたformat()の使用例

# 辞書に対してformat()を使用する例
tab = {'Vishesh': 4127, 'for': 4098, 'python': 8637678}
# 辞書を使ったformat()
print('Vishesh: {0[vishesh]:d}; For: {0[for]:d}; '
'python: {0[python]:d}'.format(tab))
data = dict(fun ="VisheshforPython", adj ="Python")
# **で展開した辞書を使ったformat()
print("I love {fun} computer {adj}".format(**data))

キーワード引数として辞書を「**」で展開して渡すことで、可読性の高いテンプレート風の文字列整形が実現できます。

文字列メソッドによる出力フォーマット

この方法では、文字列のスライシングと連結操作を組み合わせて出力を整形します。特に、center()ljust()rjust()といったメソッドを使うと、指定した幅の中で文字列を中央揃え・左揃え・右揃えに配置でき、表形式の出力などに便利です。

サンプルコード

# 文字列メソッドで出力を整形
cstr = "I love python"
# 埋め込み文字付きで中央揃えの文字列を表示
print ("Center aligned string with fillchr: ")
print (cstr.center(40, '$'))
# 「-」でパディングした左揃えの文字列を表示
print ("The left aligned string is : ")
print (cstr.ljust(40, '-'))
# 「-」でパディングした右揃えの文字列を表示
print ("The right aligned string is : ")
print (cstr.rjust(40, '-'))

実行結果

Center aligned string with fillchr:
$$$$$$$$$$$$$I love python$$$$$$$$$$$$$$
The left aligned string is :
I love python---------------------------
The right aligned string is :
---------------------------I love python

まとめ

Pythonの出力整形には、シンプルな%演算子、柔軟なformat()メソッド、そして最も直感的で推奨されるf文字列という選択肢があります。さらにcenter()ljust()などの文字列メソッドを組み合わせれば、見やすい表やレポート形式の出力も簡単に作成できます。用途に応じて最適な手法を選び、可読性の高いプログラム出力を目指しましょう。

  1. Pythonで文字列を連結して出力する方法

    Pythonでは、文字列に対してプラス(+)演算子を使用すると、それが連結演算子として機能します。つまり、2つ目の文字列を1つ目の文字列の末尾に追加し、ひとつの文字列として結合することができます。基本的な使い方以下のように、+演算子で複数の文字列をまとめ、print()関数で出力できます。>>> s1 = TutorialsPoint >>> s2 = Hyderabad >>> print(s1+s2) TutorialsPoint Hyderabadその他の文字列連結の方法+演算子以外にも、Pythonには文字列を連結する便利な方法が

  2. Pythonで文字列がASCIIのみで構成されているかどうかを確認する方法

    Pythonで文字列がすべてASCII文字だけで構成されているかどうかを判定したい場面は少なくありません。ここでは、代表的な2つの方法をわかりやすく解説します。 方法1:all()とord()を使って1文字ずつチェックする 最もシンプルな方法は、文字列内の各文字を順番に調べ、その文字コード(Unicodeコードポイント)が128未満であるかを確認することです。ASCIIは0〜127のコードポイントで定義されているため、すべての文字がこの範囲内であれば、その文字列はASCIIのみで構成されていると判断できます。 def is_ascii(s): return all(ord(c) <