Python 模板

Python 模板

Python 提供了不同的文本格式化功能。包括格式化操作符、Python 的 format() 函数和 f-string。此外,Python 的标准库包含了 string 模块,该模块提供了更多的格式化选项。

string 模块中的 Template 类对于通过PEP 292 中描述的替换技术动态形成字符串对象非常有用。它的简单语法和功能使得在国际化的情况下比其他内置的 Python 字符串格式化工具更容易翻译。

模板字符串使用 $ 符号进行替换。符号后面紧跟一个符合 Python 标识符形成规则的标识符。

语法

from string import Template

tempStr = Template('Hello $name')

Template类定义了以下方法 –

substitute()

此方法执行模板对象中标识符的值替换。可以使用关键字参数或字典对象来映射模板中的标识符。该方法返回一个新字符串。

示例1

以下代码使用关键字参数来调用substitute()方法。

from string import Template

tempStr = Template('Hello. My name is name and my age isage')
newStr = tempStr.substitute(name = 'Pushpa', age = 26)
print (newStr)

它将产生以下 输出

Hello. My name is Pushpa and my age is 26

示例2

在下例中,我们使用一个字典对象来映射模板字符串中的替代标识符。

from string import Template

tempStr = Template('Hello. My name is name and my age isage')
dct = {'name' : 'Pushpalata', 'age' : 25}
newStr = tempStr.substitute(dct)
print (newStr)

它将产生以下 输出

Hello. My name is Pushpalata and my age is 25

示例3

如果substitute()方法的参数不足以与模板字符串中的标识符匹配,Python会引发KeyError异常。

from string import 

tempStr = Template('Hello. My name is name and my age isage')
dct = {'name' : 'Pushpalata'}
newStr = tempStr.substitute(dct)
print (newStr)

它将产生以下 输出

Traceback (most recent call last):
File "C:\Users\user\example.py", line 5, in 
newStr = tempStr.substitute(dct)
^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python311\Lib\string.py", line 121, in substitute
return self.pattern.sub(convert, self.template)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python311\Lib\string.py", line 114, in convert
return str(mapping[named])
~~~~~~~^^^^^^^
KeyError: 'age'

safe_substitute()

此方法与substitute()方法类似,只是在键不足或不匹配时不会抛出错误。相反,原始的占位符将完整地出现在结果字符串中。

示例4

from string import Template
tempStr = Template('Hello. My name is name and my age isage')
dct = {'name' : 'Pushpalata'}
newStr = tempStr.safe_substitute(dct)
print (newStr)

将产生以下 输出

Hello. My name is Pushpalata and my age is $age

is_valid()

如果模板具有无效的占位符,会导致substitute()引发ValueError,则返回false。

get_identifiers()

返回模板中有效标识符的列表,按它们首次出现的顺序排列,忽略任何无效的标识符。

示例5

from string import Template

tempStr = Template('Hello. My name is name and my age is23')
print (tempStr.is_valid())
tempStr = Template('Hello. My name is name and my age isage')
print (tempStr.get_identifiers())

它将产生以下 输出

False

['name', 'age']

示例6

$符号被定义为替代字符。如果您需要在字符串中出现 $ 本身,必须进行转义。换句话说,使用 $$在字符串中使用它。

它将产生以下 输出

The symbol for Dollar is $

示例7

如果您希望将任何其他字符用作替换符号而不是”$”,请声明Template类的一个子类并进行赋值−

from string import Template

class myTemplate(Template):
   delimiter = '#'

tempStr = myTemplate('Hello. My name is #name and my age is #age')
print (tempStr.substitute(name='Harsha', age=30))

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程