Python 中的字符串格式化

新手上路,请多包涵

我想做类似 String.Format("[{0}, {1}, {2}]", 1, 2, 3) 的事情,返回:

 [1, 2, 3]

我如何在 Python 中执行此操作?

原文由 Joan Venge 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 393
2 个回答

之前的答案使用了 % 格式,这种格式在 Python 3.0+ 中被逐步淘汰。假设您使用的是 Python 2.6+,这里描述了一个更面向未来的格式化系统:

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

尽管还有更多高级功能,但最简单的形式最终看起来非常接近您所写的内容:

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

原文由 DNS 发布,翻译遵循 CC BY-SA 2.5 许可协议

您可以通过三种方式做到这一点:


使用 Python 的自动漂亮打印:

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

用变量显示相同的东西:

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


使用“经典”字符串替换(ala C 的 printf)。请注意此处 % 作为字符串格式说明符的不同含义,以及 % 将列表(实际上是一个元组)应用于格式化字符串。 (请注意 % 用作算术表达式的模(余数)运算符。)

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

请注意,如果我们使用预定义的变量,我们需要将它变成一个元组来执行此操作:

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


使用 Python 3 字符串格式。这在早期版本(从 2.6 开始)中仍然可用,但在 Py 3 中是这样做的“新”方式。请注意,您可以使用位置(序数)参数或命名参数(我已经把它放在他们以相反的顺序。

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

请注意名称“一”、“二”和“三”可以是任何有意义的名称。)

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

原文由 Peter 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题