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]'