我有一个这样的模板:
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
我尝试了一些方法,但找不到任何优雅的和可重用函数来提取变量。 有什么想法吗?
提前致谢
请您参考如下方法:
为什么不使用正则表达式?他们有命名组,您可以在字典中提取它们。
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'}
>>>
