Python中的字符串模板类
在字符串模块中,模板类允许我们为输出规范创建简化的语法。该格式使用由 $ 组成的占位符名称和有效的Python标识符(字母数字字符和下划线)。用大括号包围占位符允许它后面跟更多的字母数字字母,中间没有空格。写入 $$ 会创建一个转义的 $。
Python字符串模板:
Python字符串模板是通过将模板字符串传递给其构造函数来创建的。它支持基于 $ 的替换。这个类有两个关键方法:
- 替换(映射,**kwds):此方法使用字典执行替换,其过程类似于基于键的映射对象。关键字参数也可以用于相同的目的。如果基于键的映射和关键字参数具有相同的键,则会抛出TypeError 。如果缺少键,则返回KeyError 。
- safe_substitute(mapping, **kwds):此方法的行为类似于替换方法,但如果缺少键,它不会抛出KeyError ,而是在结果字符串中返回一个占位符。
当字典或关键字参数中未提供占位符时,substitute() 方法会引发 KeyError。对于邮件合并风格的应用程序,用户提供的数据可能不完整,而 safe_substitute() 方法可能更合适——如果数据丢失,它将保持占位符不变:
下面是几个简单的例子。
示例 1:
Python3
# A Simple Python template example
from string import Template
# Create a template that has placeholder for value of x
t = Template('x is $x')
# Substitute value of x in above template
print (t.substitute({'x' : 1}))
Python3
# A Python program to demonstrate the
# working of the string template
from string import Template
# List Student stores the name and marks of three students
Student = [('Ram',90), ('Ankit',78), ('Bob',92)]
# We are creating a basic structure to print the name and
# marks of the students.
t = Template('Hi $name, you have got $marks marks')
for i in Student:
print (t.substitute(name = i[0], marks = i[1]))
Python3
from string import Template
template = Template('$name is the $job of $company')
string = template.safe_substitute(name='Raju Kumar',
job='TCE')
print(string)
Python3
t = Template('I am $name from $city')
print('Template String =', t.template)
Python3
template = Template('$$ is the symbol for $name')
string = template.substitute(name='Dollar')
print(string)
Python3
template = Template( 'That $noun looks ${noun}y')
string = template.substitute(noun='Fish')
print(string)
输出:
x is 1
以下是另一个示例,我们从列表中导入学生的姓名和分数并使用模板打印它们。
示例 2:
Python3
# A Python program to demonstrate the
# working of the string template
from string import Template
# List Student stores the name and marks of three students
Student = [('Ram',90), ('Ankit',78), ('Bob',92)]
# We are creating a basic structure to print the name and
# marks of the students.
t = Template('Hi $name, you have got $marks marks')
for i in Student:
print (t.substitute(name = i[0], marks = i[1]))
输出:
Hi Ram, you have got 90 marks
Hi Ankit, you have got 78 marks
Hi Bob, you have got 92 marks
下面的示例显示了 safe_substitute 方法的实现。
示例 3:
Python3
from string import Template
template = Template('$name is the $job of $company')
string = template.safe_substitute(name='Raju Kumar',
job='TCE')
print(string)
输出:
Raju Kumar is the TCE of $company
请注意,我们没有为“$company”占位符提供任何数据,但它不会抛出错误,而是将占位符作为字符串返回,如上所述。
打印模板字符串
Template 对象的“template”属性可用于返回模板字符串,如下所示:
例子:
Python3
t = Template('I am $name from $city')
print('Template String =', t.template)
输出:
Template String = I am $name from $city
转义 $ 符号
$$可用于转义$并将其视为字符串的一部分。
例子:
Python3
template = Template('$$ is the symbol for $name')
string = template.substitute(name='Dollar')
print(string)
输出:
$ is the symbol for Dollar
${标识符}
${Identifier} 的工作方式与 $Identifier 类似。当有效标识符字符跟随占位符但不是占位符的一部分时,它会派上用场。
例子:
Python3
template = Template( 'That $noun looks ${noun}y')
string = template.substitute(noun='Fish')
print(string)
输出:
That Fish looks Fishy
模板的另一个应用是将程序逻辑与多种输出格式的细节分开。这使得用自定义模板替换 XML 文件、纯文本报告和 HTML Web 报告成为可能。
请注意,还有其他方法可以打印格式化输出,例如整数的 %d、浮点数的 %f 等(有关详细信息,请参阅此内容)
参考:https://docs。 Python.org/3.3/tutorial/stdlib2.html