2016-03-25 96 views
2

舉例來說,如果我有一個模板,如是否有辦法讓獵豹模板

"SELECT * FROM myOrders WHERE order_id = ${orderId} and order_date = ${orderDate}" 

我想在模板中獲取所有佔位符列表,即所有佔位符列表['orderId','orderDate']

回答

1

我可以使用正則表達式來拉出這些佔位符。

p.s.儘管如此,在Cheetah API中擁有該功能(可能在Template類中)會很好。

例如:

import re 
templateDef = """ 
SELECT * FROM myOrders WHERE order_id = ${orderId} and order_date = ${orderDate} 
""" 
placeholders = re.findall(r"\${(\w+)}", templateDef) 
print placeholders 
1

Formatter.parse應該工作:

s = "SELECT * FROM myOrders WHERE order_id = ${orderId} and order_date = ${orderDate}" 

from string import Formatter 
#literal_text, field_name, format_spec, conversion 
print([plh for _, plh, _,_ in Formatter().parse(s) if plh]) 
['orderId', 'orderDate']