列出模板字符串中的项目

时间:2016-03-08 11:32:47

标签: python

我确定我必须遗漏某些内容,是否有办法列出string.Template个实例中的所有模板?或者我真的必须恢复到正则表达式才能找到它们吗?

2 个答案:

答案 0 :(得分:1)

您可以使用模板使用的正则表达式并提取名称:

$details = $this->getDetails();
$conferance_name = $details['product_name'];
$hotel = $details['hotelval'];
$datefor = $details['dateval'];
$ogtitel = $details['navn_title'];
$virksomhed = $details['virksomhed'];
$adresse = $details['adresse'];
$postnr = $details['postnr'];
$by = $details['by'];
$telefon = $details['telefon'];
$email = $details['email'];
$kommentarer = $details['kommentarer'];
$ean = $details['ean'];
$entries = $details['entries'];
$newdate = date('Y-m-d')


$conn = Mage::getSingleton('core/resource')->getConnection('core_write');
$sql = "INSERT INTO mage_emailorder (emailorder_id, order_date, product_name, location, date_for, name_title, email, company, adress, zipcode, city, phone, ean, comment, order_done, number_of_entries)
VALUES (NULL, '$newdate', '$conferance_name', '$hotel', '$datefor', '$ogtitel', '$email', '$virksomhed', '$adresse', '$postnr', '$by', '$telefon', '$ean', '$kommentarer', '0', '$entries')";

文档说正则表达式有4个捕获组:

  • escaped - 此组匹配转义序列,例如$$,在 默认模式。
  • named - 此组与未支撑的占位符匹配 名称;它不应该包括捕获组中的分隔符。
  • braced - 此组匹配括号内的占位符名称;这应该 不包括捕获组中的分隔符或大括号。
  • 无效 - 此组匹配任何其他分隔符模式(通常为 单个分隔符),它应该出现在常规的最后一个 表达

答案 1 :(得分:0)

这是一种完全不同的方式(由Lutz Horn的答案触发,但更简单):

from string import Template
from collections import defaultdict

d = defaultdict(str)
s = Template('$who likes $what $$ ${another}')
s.substitute(d)
print(d.keys())

给出预期的输出。