是否可以在不知道顺序的情况下将变量值插入到字符串中?
我熟悉Python:将变量插入到没有顺序的字符串中
"% world" % "Hello"
语法,但有什么比得上
string = "Order id %{order.id}, price: %price" % (price, order)
我这么问是因为我想有不一致的使用变量字符串列表,以及它们的位置,我想用一个函数来代替它们。
是否可以在不知道顺序的情况下将变量值插入到字符串中?
我熟悉Python:将变量插入到没有顺序的字符串中
"% 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 '
这使用关键字参数,其本质上是无序的。
+1。这实际上是现在建议的方式。 – 2013-03-01 01:54:53
从我+1以及 – 2013-03-01 01:58:14
也从我+1也;) – Mikhail 2013-03-01 03:53:10
这里假定order
和price
是整数。您可以使用任何其他格式说明符代替d
。 (即f
浮法)
string = "Order id %(order)d, price: %(price)d" % {'price': price, 'order': order}
这样的作品,但我不认为旧的风格有任何方式访问属性。例如'“%(order.id)d”'?? – mgilson 2013-03-01 01:56:18
正确。你将不得不在字典中使用'order.id'。 – 2013-03-01 01:57:42
你有列表字符串或字典?如果它是一个真正的列表,那么你不可能做任何有用的事情,因为你不知道什么是价值。但如果这是一个字典,你有几个选择。使用%
操作:
"Order number %(order_id)s, price: %(price)s" % dict(order_id=3, price=4.00)
但我注意到你在你的榜样,这听起来像它意味着order
有order.id
是一些自定义的对象。在这种情况下,你可以使用新的方法.format
,它可以让你在正确的字符串查找属性:
"Order number {order.id}, price: {price}".format(order=..., price=...)
可能在此躺在附近的某个地方的欺骗,但链接的欺骗不考虑的情况下,字符串中的属性访问。 '“{order.id}”。format(order = ...)' – mgilson 2013-03-01 02:01:47
你是对的;它有点类似,答案有所涵盖,但我从来没有遇到过这个问题,因为这个问题的措辞不同。 – Mikhail 2013-03-01 03:54:20