是否可以在不知道订单的情况下将变量值注入字符串?
我很熟悉
"% world" % "Hello"
语法,但是有什么可以与
相媲美string = "Order id %{order.id}, price: %price" % (price, order)
我在问,因为我想要一个不一致的变量使用字符串列表及其位置,我想在函数内部替换它们。
答案 0 :(得分:4)
您可以使用.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 '
这使用了本质上无序的关键字参数。
答案 1 :(得分:0)
这假设order
和price
是整数。您可以使用任何其他格式说明符代替d
。 (即浮动的f
)
string = "Order id %(order)d, price: %(price)d" % {'price': price, 'order': order}
答案 2 :(得分:0)
你有一个列表的字符串,还是一个字典?如果它是一个实际的列表,那么你不可能做任何有用的事情,因为你不知道什么是什么价值。但如果它是一个词典,你有几个选择。使用%
运算符:
"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=...)