Lớp template chuỗi của Python được dùng để tạo một chuỗi template đơn giản. Python template strings lần đầu được giới thiệu trong Python 2.4. Python string template được tạo bằng cách truyền chuỗi template làm đối số cho constructor. Nơi các toán tử định dạng chuỗi dùng dấu phần trăm cho thay thế, thì đối tượng template dùng dấu dollar.
Lớp Template cung cấp ba phương thức để tạo chuỗi từ template:
- Class string.Template(template) - Constructor nhận một đối số duy nhất là chuỗi template.
- substitute(mapping, **keywords) - Phương thức thay thế giá trị chuỗi (mapping) cho các giá trị placeholder trong template. Mapping là đối tượng giống dictionary, các giá trị có thể truy cập như dictionary. Nếu đối số keywords được dùng, nó đại diện cho các placeholder. Khi cả mapping và keywords đều được dùng, keyword có ưu tiên cao hơn. Nếu placeholder thiếu trong mapping hoặc keywords, KeyError được ném ra.
- safe_substitute(mapping, **keywords) - Hoạt động tương tự substitute(). Tuy nhiên, nếu placeholder thiếu trong mapping hoặc keywords, placeholder gốc được giữ nguyên mặc định, tránh KeyError. Ngoài ra, mọi lần xuất hiện của '$' trả về dấu dollar.
Đối tượng Template cũng có một thuộc tính công khai:
- Template - Là đối tượng được truyền cho đối số template của constructor. Mặc dù truy cập chỉ đọc không được ép buộc, nhưng khuyến cáo không nên thay đổi thuộc tính này trong chương trình.
Ví dụ Python Template String
from string import Template
t = Template('$when, $who $action $what.')
s = t.substitute(when='In the winter', who='Rajesh', action='drinks', what='Coffee')
print(s)
# Dictionary làm đối số substitute
d = {"when": "In the winter", "who": "Rajesh", "action": "drinks", "what": "Coffee"}
s = t.substitute(**d)
print(s)
Kết quả
In the winter, Rajesh drinks Coffee.
In the winter, Rajesh drinks Coffee.
safe_substitute()
from string import Template
t = Template('$when, $who $action $what.')
s = t.safe_substitute(when='In the winter', who='Rajesh', action='drinks', what='Coffee')
print(s)
Kết quả
In the winter, Rajesh drinks Coffee.
In chuỗi template
Thuộc tính template trong đối tượng template trả về chuỗi template.
from string import Template
t = Template('$when, $who $action $what.')
print('Template String: ', t.template)
Kết quả
Template String: $when, $who $action $what.
Escape dấu $
from string import Template
t = Template('$$ is called $name')
s = t.substitute(name='Dollar')
print(s)
Kết quả
$ is called Dollar
${identifier} ví dụ:
${<identifier>} tương đương với $<identifier>
Bắt buộc khi các ký tự identifier hợp lệ theo sau placeholder nhưng không phải là một phần của placeholder, ví dụ ${noun}ification.
from string import Template
t = Template('$noun adjective is ${noun}ing')
s = t.substitute(noun='Test')
print(s)
Kết quả
Test adjective is Testing