-2

%sを使用して、2つのパラメーターを文字列に渡したい。

私はこれを試しましたが、うまくいきませんでした:

title = "im %s with %s"
title % "programming" % "python"

このエラーが発生します:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: not enough arguments for format string

アイデアはありますか?ありがとう

4

3 に答える 3

8

正しい構文は次のとおりです。

title = "im %s with %s"
title % ("programming", "python")

%演算子は2つのオペランドを取ります。

  1. フォーマット文字列は左側にあります。
  2. すべての引数を含むタプルは右側に配置されます(パラメーターが1つしかない場合は、スカラーにすることができます)。
于 2012-05-19T17:59:23.190 に答える
5

この問題は、これらのフォーマットディレクティブがどのように機能するかを分析することでおそらく最もよく理解できます。基本的な考え方は%、文字列内のそれぞれは、引数を後で文字列に提供する必要があることを意味します。

たとえば、これは機能します。

title = "i'm %s with %s" % ('programming', 'python')

と収量

"i'm programming with python"

の「s」%sは、これが文字列のプレースホルダーであることを意味します。「d」は整数の場合、「f」は浮動小数点数などの場合です。指定できる追加のパラメーターもあります。これらのドキュメントを参照してください。

各プレースホルダーに十分なアイテムを提供しないと、not enough arguments for format stringメッセージが表示されます。

特定の例では、最初に2つのフォーマットディレクティブを含む文字列定数を作成します。次に、それを使用するときは、2つのアイテムを提供する必要があります。

言い換えると、

title = "i'm %s with %s"
title % ('programming', 'python')

になります

"i'm %s with %s" % ('programming', 'python')
于 2012-05-19T17:59:19.977 に答える
1

本当の答えではありませんが:

次のようなものを使用することもできます。

title = "im %(doing)s with %(with)s"
title % {'doing': 'programming', 'with': 'python'}

また:

title = "im %(doing)s with %(with)s" % {'doing': 'programming', 'with': 'python'}

%sの代わりに%(辞書キー)を使用し、タプルの代わりにモジュロ演算子の後にdictを渡します。

文字列のフォーマット操作を確認する

于 2012-05-19T18:22:02.643 に答える