是否可以在不知道顺序的情况下将变量值注入字符串?
我熟悉
"% 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 '
这使用本质上无序的关键字参数。
你有字符串列表还是字典?如果它是一个实际的列表,那么你不可能做任何有用的事情,因为你不知道什么是什么值。但如果它是一个字典,你有几个选择。使用%
运算符:
"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}