[英]How to dynamically parse python string templates?
我有一個帶有占位符的字符串,例如:
url = "http://www.myserver.com/$abc/$foo_or_bar/$xy"
我不能使用模板( http://is.gd/AKmGxa ),因為我的占位符字符串需要用某種邏輯來解釋。
我需要遍歷所有現有的占位符,並用代碼生成的值替換它們。
我怎樣才能做到這一點? TIA!
使用re.sub
,它可以接受替換函數作為第二個參數;
>>> url = "http://www.myserver.com/$abc/$foo_or_bar/$xy"
>>>
>>> def some_logic(match):
... s = match.group() # to get matched string
... return str(len(s) - 1) # put any login you want here
...
>>> import re
>>> re.sub('\$\w+', some_logic, url)
'http://www.myserver.com/3/10/2'
順便說一句,如果您通過自定義映射,也可以使用string.Template
:
>>> class CustomMapping:
... def __getitem__(self, key):
... return str(len(key))
...
>>> import string
>>> url = "http://www.myserver.com/$abc/$foo_or_bar/$xy"
>>> string.Template(url).substitute(CustomMapping())
'http://www.myserver.com/3/10/2'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.