Python:将变量插入到没有顺序的字符串中

时间:2013-03-01 01:51:33

标签: python

是否可以在不知道订单的情况下将变量值注入字符串?
我很熟悉

"% world" % "Hello"

语法,但是有什么可以与

相媲美
string = "Order id %{order.id}, price: %price" % (price, order)

我在问,因为我想要一个不一致的变量使用字符串列表及其位置,我想在函数内部替换它们。

3 个答案:

答案 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)

这假设orderprice是整数。您可以使用任何其他格式说明符代替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=...)