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

Python TypeError:フォーマット文字列の引数が足りません解決策

Python文字列は、正しい数の引数を使用してフォーマットする必要があります。指定する引数の数が文字列にフォーマットする値の数より少ない場合、「TypeError:文字列をフォーマットするための十分な引数がありません」のようなエラーが発生します。

このガイドでは、このエラーの意味と、エラーが発生する理由について説明します。コードでこのエラーを解決する方法を理解するのに役立つ例を紹介します。

TypeError:フォーマット文字列に十分な引数がありません

エラーはTypeErrorです。これは、基になるデータ型がその操作をサポートしていない値に対して何かを行おうとしたことを意味します。

この場合、文字列のフォーマットを使用します。 Pythonは、文字列のフォーマットを間違えたと言っています。

文字列をフォーマットする場合、指定する引数の数は、フォーマットする値の数と同じである必要があります。そうしないと、エラーが発生します。

シナリオ例

このエラーが発生する一般的な状況は、引数を%文字列形式で括弧で囲むのを忘れた場合です。この構文では、%演算子を使用して、文字列に値を追加します。

ここでは、優等生の学生名のリストを文字列にフォーマットするアプリを作成します。まず、学生の名前のリストを定義します。

students = ["Andy", "Malcolm", "Lindsay", "Lucy"]

次に、%構文を使用してこれらの値を文字列にフォーマットします。

参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。

平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。

honor_roll = "%s, %s, %s, and %s are on the CK High School Honor Roll." % students[0], students[1], students[2], students[3]
print(honor_roll)

「students」配列の4つの名前すべてを「honor_roll」文字列にフォーマットします。文字列内で%sを使用して、値をフォーマットする場所を示します。 %は、文字列の後に使用され、文字列に追加する値を指定します。

コードを実行して、何が起こるかを確認します:

Traceback (most recent call last):
  File "main.py", line 3, in <module>
	honor_roll = "%s, %s, %s, and %s are on the CK High School Honor Roll." % students[0], students[1], students[2], students[3]
TypeError: not enough arguments for format string

Pythonでエラーが発生しました。どうすれば解決できるか見てみましょう。

解決策#1:文字列フォーマット構文の修正

文字列のフォーマット方法に誤りがあります。 %演算子を使用する場合、文字列に追加する値は括弧で囲む必要があります。

上記の例では、文字列内に追加する値をコンマ区切り値のリストとして指定します。このリストは括弧内に表示されません。

括弧内の%記号に続く値を囲むことにより、エラーを修正します。

honor_roll = "%s, %s, %s, and %s are on the CK High School Honor Roll." % (students[0], students[1], students[2], students[3])

コードを実行してみましょう:

Andy, Malcolm, Lindsay, and Lucy are on the CK High School Honor Roll.

私たちのコードは、優等生の生徒を知らせるメッセージを正常に返します。

解決策#2:.format()を使用する

%構文は古くなり始めています。 .format()メソッドなど、文字列をフォーマットする他のメソッドがあります。これらは、最新のPythonコードでより好まれています。

この問題を解決するには、.format()を使用できます。 %構文の代わりに構文:

honor_roll = "{}, {}, {}, and {} are on the CK High School Honor Roll.".format(students[0], students[1], students[2], students[3])

この構文の構造は、%メソッドの構造と似ています。文字列では、{}角かっこを使用して、値を追加する場所を示します。

.format()を使用します 文字列に追加する値のリストを指定するメソッド。コードを実行してみましょう:

Andy, Malcolm, Lindsay, and Lucy are on the CK High School Honor Roll.

私たちのプログラムは、優等生の学生の名前のリストを正常に表示します。このリストは文字列の一部としてフォーマットされています。

結論

「TypeError:フォーマット文字列に十分な引数がありません」エラーは、文字列フォーマット操作で指定された引数の数が、文字列に追加する値の数と等しくない場合に発生します。

この問題を解決するには、%演算子を使用している場合は、最初にすべての引数を中括弧()で囲んでください。 .format()を使用できます このエラーを修正してコードを最新化する場合は、%構文の代わりにメソッドを使用します。

これで、エキスパートのようにこの一般的なPythonエラーを修正する準備が整いました!


  1. 文字列内のURLをチェックするPythonプログラム

    この場合、Pythonでreモジュールを使用します。ここでは、文字列を受け入れ、文字列にantURLが含まれているかどうかを確認します。 URLが文字列に含まれている場合は、を表示します。この問題を解決するためにfindall()メソッドを使用します。 アルゴリズム Step 1: given string as input. Step 2: findall() function is return all non-overlapping matches of pattern in string and in this function the string is scanned left t

  2. Python 3で辞書を使用して文字列をフォーマットするにはどうすればよいですか?

    辞書を使用して文字列を補間できます。これらには、%と変換文字の間の括弧内にキーを指定する必要がある構文があります。たとえば、フロートがキー「cost」に格納されていて、それを「$ xxxx.xx」としてフォーマットする場合は、表示する場所に「$%(cost).2f」を配置します。 。 辞書で文字列フォーマットを使用して文字列を補間し、数値をフォーマットする例を次に示します。 >>>print('%(language)s has %(number)03d quote types.' % {'language': "Python&quo