我有一个这样的模板:
foo_tmplte = Template("fieldname_${ln}_${type} = $value")
并且使用此模板解析了许多字符串,如下所示:
foo_str1 = "fieldname_ru_ln = journal"
foo_str2 = "fieldname_zh_TW_ln = journal"
foo_str3 = "fieldname_uk_ln = номер запису"
现在我想从模板中提取回变量,例如使用str1,结果必须是:
ln = ru
type = ln
value = journal
我尝试了一些方法,但我找不到任何优雅的和可重用的函数来提取变量。 有什么想法吗?
提前致谢
答案 0 :(得分:1)
为什么不使用正则表达式?他们已命名组,您可以在字典中提取它们。
Tue Aug 17 14:33:58 $ python
Python 2.6.5 (r265:79063, Jun 12 2010, 17:07:01)
[GCC 4.3.4 20090804 (release) 1] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> foo_template = re.compile(r"^fieldname_(?P<ln>\w+?)_(?P<type>\w+) = (?P<value>.*)$")
>>> m = foo_template.match("fieldname_zh_TW_ln = journal")
>>> m
<_sre.SRE_Match object at 0x7ff34840>
>>> m.groupdict()
{'ln': 'zh', 'type': 'TW_ln', 'value': 'journal'}
>>>
答案 1 :(得分:0)
您可以使用Jinja2,一个通用的模板库。但是,您必须更改字符串格式:
"fieldname_{{ ln }}"