从python字符串模板中提取变量

时间:2012-04-15 00:50:14

标签: python django

对于python字符串模板,有一种简洁的方法来提取模板字符串中的变量名称。

我实际上希望能够将模板拼写写入文本字段,然后将变量替换为其他更复杂的变量。

例如,我将用户输入的模板转换为变量

t = Template(( request.POST['comment'] ))

评论字符串可能

'$who likes $what'

我需要一个变量名称数组,所以我可以将字符串转换为类似

的字符串
{{{who}}} likes {{{what}}}

也许有更好的方法可以解决这个问题。

2 个答案:

答案 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)