Python で TypeError: Not Enough Arguments for Format String を修正

Manav Narula 2022年4月14日
Python で TypeError: Not Enough Arguments for Format String を修正

Python では、文字列をフォーマットして、目的のスタイルとフォーマットで最終結果を得ることができます。

文字列の書式設定には、%記号付きのプレースホルダー値の使用も含まれます。このメソッドは、Python で欠落している値に一時的な値を提供するための非常に一般的な手法です。

ただし、注意しないと、not enough arguments for format string というエラー、TypeError が発生する可能性があります。このチュートリアルでは、このエラーとその解決策について説明します。

次のコードを参照してください。

a = 2
b = 4
c = 6
s = "First %s Second %s Third %s" % a, b, c
print(s)

出力:

TypeError: not enough arguments for format string

このエラーが発生するのは、値を指定するために文字列に%記号を 1つだけ指定し、値が 3つあるためです。上記のコードは、最初の値(a)のみを考慮します。これを解決するには、それらをタプルで渡す必要があります。

例えば:

a = 2
b = 4
c = 6
s = "First %s Second %s Third %s" % (a, b, c)
print(s)

出力:

First 2 Second 4 Third 6

このエラーを克服する別の方法は、format() 関数を使用することです。%メソッドは、文字列のフォーマットでは古くなっています。

format() 関数で値を指定し、中括弧 {} を使用して欠落している値を指定できます。

以下のコードを参照してください。

a = 2
b = 4
c = 6
s = "First {0} Second {1} Third {2}".format(a, b, c)
print(s)

出力:

First 2 Second 4 Third 6

Python 3.x 以降では、fstrings を使用してプレースホルダー文字列を提供できます。このメソッドは、文字列をフォーマットするためのより新しく、より効率的な方法です。

前の例で行ったように、中括弧内に値を指定できます。

次の例を参照してください。

a = 2
b = 4
c = 6
s = f"First {a} Second {b} Third {c}"
print(s)

出力:

First 2 Second 4 Third 6
著者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

関連記事 - Python String