对于python字符串模板,有一种简洁的方法来提取模板字符串中的变量名称。
我实际上希望能够将模板拼写写入文本字段,然后将变量替换为其他更复杂的变量。
例如,我将用户输入的模板转换为变量
t = Template(( request.POST['comment'] ))
评论字符串可能
'$who likes $what'
我需要一个变量名称数组,所以我可以将字符串转换为类似
的字符串{{{who}}} likes {{{what}}}
也许有更好的方法可以解决这个问题。
答案 0 :(得分:3)
我不知道任何与模板相关的api,但你可以使用regexp:
>>> import re
>>> rx = re.compile(r'\$(\w+)')
>>> rx.sub(r'{{{\1}}}', '$who likes $what')
'{{{who}}} likes {{{what}}}'
rx.sub()
的第一个参数替换第二个参数中每个变量的出现,\1
被变量的名称替换。
答案 1 :(得分:1)
def replaceVars(matchObj):
return "{{{%s}}}" % matchObj.groups()[0]
c = r"\$(\w+)\s*"
s = "$who likes $what"
converted = re.sub(c, replaceVars, s)