順序を知らずに変数値を文字列に挿入することは可能ですか?
私はよく知っている
"% world" % "Hello"
構文ですが、それに匹敵するものはありますか
string = "Order id %{order.id}, price: %price" % (price, order)
変数の使用とその配置に一貫性がない文字列のリストが必要であり、それらをすべて関数内で置き換えたいので、私は尋ねています。
順序を知らずに変数値を文字列に挿入することは可能ですか?
私はよく知っている
"% world" % "Hello"
構文ですが、それに匹敵するものはありますか
string = "Order id %{order.id}, price: %price" % (price, order)
変数の使用とその配置に一貫性がない文字列のリストが必要であり、それらをすべて関数内で置き換えたいので、私は尋ねています。
使用できます.format
:
>>> class order(object) : pass
...
>>> a = order()
>>> a.id=3
>>> "{order.id}".format(order=a)
'3'
>>> "{order.id} and then a {foo} hit the {baz} ".format(baz="fan",foo="rocket",order=a)
'3 and then a rocket hit the fan '
これは、本質的に順序付けされていないキーワード引数を使用します。
文字列のリスト、または辞書はありますか? それが実際のリストである場合、どの値が何であるかがわからないため、おそらく何も役に立ちません。しかし、それが dict の場合、いくつかのオプションがあります。%
演算子の使用:
"Order number %(order_id)s, price: %(price)s" % dict(order_id=3, price=4.00)
しかし、あなたの例にあることに気づきました。これは、カスタムオブジェクトであるorder.id
ことを意味しているように聞こえます。order
その場合、新しい.format
メソッドを使用できます。これにより、文字列内で属性を直接検索できます。
"Order number {order.id}, price: {price}".format(order=..., price=...)
order
これは、とprice
が整数であることを前提としています。の代わりに、他の任意の書式指定子を使用できますd
。(つまりf
フロートの場合)
string = "Order id %(order)d, price: %(price)d" % {'price': price, 'order': order}