在str.format()中使用位置编号

时间:2015-06-29 18:58:22

标签: python string string-formatting

我正在努力将%的使用转换为str.format(),并且已经意识到不需要位置编号的字符串。例如

>>> "We have {0} hectares planted to {1}.".format(49, "okra")
'We have 49 hectares planted to okra.'
>>> "We have {} hectares planted to {}.".format(49, "okra")
'We have 49 hectares planted to okra.'

什么时候应该使用数字?何时应该省略它们?如果只有一种替代哪种方式更清楚?在我的整个脚本中,永远不会出现无序替换,因此我可以使用无数字来保持一致。

我正在为那些通常不具备编程知识但通常需要稍微使用/调整脚本的科学家编写脚本。

2 个答案:

答案 0 :(得分:4)

当您不按顺序使用位置参数时,请使用这些数字,或者您需要支持Python 2.6;后者不支持占位符的自动编号。

当您的占位符和位置参数完全匹配时,自动编号会使编写快速格式更容易。

当然,如果您觉得传入的参数太多而无法轻易计算出参数的位置,您应该手动编号,或者更好的是使用关键字参数(将名称映射到参数更容易跟踪) 。 太多是主观的,但我说7 is the absolute maximum,最好不要超过5个。

答案 1 :(得分:2)

说实话,我认为最好的形式是

"We have {number} hectares planted to {what}.".format(number=5,what="Okra")

因为这非常易读

这个答案主要是我所知道的意见......

相关问题