1

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

"% world" % "Hello"

语法,但有什么可比的

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

我之所以问,是因为我想要一个字符串列表,其中变量的使用及其位置不一致,并且我想在函数中全部替换它们。

4

3 回答 3

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 '

这使用本质上无序的关键字参数。

于 2013-03-01T01:53:47.540 回答
1

你有字符串列表还是字典?如果它是一个实际的列表,那么你不可能做任何有用的事情,因为你不知道什么是什么值。但如果它是一个字典,你有几个选择。使用%运算符:

"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=...)
于 2013-03-01T01:55:41.500 回答
0

这假设orderprice是整数。您可以使用任何其他格式说明符代替d. (即f浮动)

string = "Order id %(order)d, price: %(price)d" % {'price': price, 'order': order}
于 2013-03-01T01:54:46.307 回答