2

私が使用しているWebサイトのバックエンドには、製品の注文時にCSVファイルで送信されるデータをカスタマイズできるオプションがあります。2つの列があり、左側の列はヘッダーを割り当てる場所であり、右側の列は変数を入力する場所です。既存の変数の構文は、%(order.random_variable)sまたは%(item.random_variable)sに似ています。これはPythonの文字列プレースホルダーに似て%sおり、同じではないにしても、関連していると確信していますが、構文はよくわかりません。誰かがこのコードの目的について詳しく説明してもらえますか?

ああ、そして記録のために、私はすぐに変数を変更するつもりはありません。これについての私の研究のための良い出発点を探しているだけです。

4

2 に答える 2

6

これはに似てい%sます。括弧内の部分はオプションです。

唯一の違いは、最初の値は、フォーマット文字列で指定されたアイテムの数を正確に持つタプルである必要があり、2番目の値は、単一のマッピングオブジェクト(辞書など)である必要があることです。

文字列フォーマットのドキュメントに明確に記載されています:-

変換指定子には2つ以上の文字が含まれ、次のコンポーネントがあり、これらはこの順序で発生する必要があります。

  1. 指定子の開始を示す「%」文字。
  2. 括弧で囲まれた文字のシーケンス(たとえば、(somename))で構成されるマッピングキー(オプション)。
    ..そしてもう少しあります

また: -

右の引数が辞書(または他のマッピングタイプ)の場合、文字列の形式には、'%'文字の直後に挿入された辞書に括弧で囲まれたマッピングキーを含める必要があります。マッピングキーは、マッピングからフォーマットする値を選択します

ドキュメントからの例:-

>>> print '%(language)s has %(number)03d quote types.' % \
...       {"language": "Python", "number": 2}
Python has 002 quote types.

したがって、()%と前のテキストskey辞書にあります。

于 2012-11-29T19:57:44.897 に答える
4

はい、これは%sに似ています。()内の部分は、Pythondictのキーを参照しています。例えば:

mydict = {'yay':'boo'}
print '%(yay)s'%mydict

# boo
于 2012-11-29T19:58:55.827 に答える