我想知道使用 模板字符串 而不是新的 高级字符串格式 是否有优势?
原文由 P3trus 发布,翻译遵循 CC BY-SA 4.0 许可协议
字符串模板的一个主要优点是您可以使用 safe_substitute
方法 仅替换 部分 占位符。如果未向占位符传递值,普通格式字符串将引发错误。例如:
"Hello, {first} {last}".format(first='Joe')
提出:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'last'
但:
from string import Template
Template("Hello, $first $last").safe_substitute(first='Joe')
生产:
'Hello, Joe $last'
请注意,返回值是一个字符串,而不是 Template
;如果您想替换 $last
您需要从该字符串创建一个新的 Template
对象。
原文由 bwk 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答893 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
模板意味着比通常的字符串格式更简单,但要以表现力为代价。 PEP 292 的基本原理将模板与 Python 的
%
风格的字符串格式进行比较:虽然新的
.format()
改善了这种情况,但 格式字符串语法 仍然相当复杂,因此基本原理仍然有其意义。