Skip to main content
 首页 » 编程设计

python之从使用模板解析的字符串中提取值的优雅方式

2025年05月04日18xing901022

我有一个这样的模板:

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'} 
>>>