Python中的string格式

我想要做一些像String.Format("[{0}, {1}, {2}]", 1, 2, 3) ,它返回:

 [1, 2, 3] 

我如何在Python中做到这一点?

以前的答案已经使用%格式化,正在Python 3.0 +中逐步淘汰。 假设你使用的是Python 2.6+,这里描述了一个更具前瞻性的格式化系统:

http://docs.python.org/library/string.html#formatstrings

虽然也有更高级的function,但最简单的forms最终看起来非常接近你写的:

 >>> "[{0}, {1}, {2}]".format(1, 2, 3) [1, 2, 3] 

你可以用三种方法做到这一点:


使用Python的自动漂亮打印:

 print [1, 2, 3] # Prints [1, 2, 3] 

显示与variables相同的东西:

 numberList = [1, 2] numberList.append(3) print numberList # Prints [1, 2, 3] 

使用“经典”stringreplace(ala C的printf)。 请注意这里的%作为string格式说明符的不同含义,以及将该列表(实际上是元组)应用于格式化string的%。 (注意%用作算术expression式的模(余数)运算符。)

 print "[%i, %i, %i]" % (1, 2, 3) 

注意,如果我们使用我们的预定义variables,我们需要把它变成一个元组来做到这一点:

 print "[%i, %i, %i]" % tuple(numberList) 

使用Python 3string格式。 这在2.6的早期版本中仍然可用,但是在Py 3中是新的方式。注意,你可以使用位置(有序)参数或命名参数(对于我所说的他们以相反的顺序。

 print "[{0}, {1}, {2}]".format(1, 2, 3) 

注意名字“一”,“二”和“三”可以是任何有意义的。)

 print "[{one}, {two}, {three}]".format(three=3, two=2, one=1) 

你正在寻找string格式,在python中是基于C中的sprintf函数

 print "[%s, %s, %s]" % (1, 2, 3) 

有关完整的参考,请看这里: http : //docs.python.org/library/stdtypes.html#string-formatting

要按顺序打印元素,请使用{}而不指定索引

 print('[{},{},{}]'.format(1,2,3)) 

(自Python 2.7和Python 3.1以来的作品)

你还没有提出自己非常值得赞赏的,但我敢打赌,这是你正在寻找的东西:

 foo = "Hello" bar = "world" baz = 2 print "%s, %s number %d" % (foo, bar, baz) 

我认为这个组合缺失了:P

 "[{0}, {1}, {2}]".format(*[1, 2, 3]) 

你有很多解决scheme:)

简单的方式(C式)

 print("[%i, %i, %i]" %(1, 2, 3)) 

使用str.format()

 print("[{0}, {1}, {2}]", 1, 2, 3) 

使用str.Template()

 s = Template('[$a, $b, $c]') print(s.substitute(a = 1, b = 2, c = 3)) 

您可以阅读PEP 3101 – 高级string格式

如果你不知道列表中有多less项目,这个问题是最普遍的

 >>> '[{0}]'.format(', '.join([str(i) for i in [1,2,3]])) '[1, 2, 3]' 

string列表是简单的

 >>> '[{0}]'.format(', '.join(['a','b','c'])) '[a, b, c]'