从格式化输出生成str.format样式模板字符串的值

时间:2011-08-30 07:34:41

标签: python

这似乎是一个奇怪的要求,但我正在寻找一个很好的实现来做到这一点。

我有像

这样的词典
vals = dict(red='#F00', green='#0F0', blue='#00F')

之类的字符串
tpl = '{red}:{green}:{blue}'

str.format输出

output = tpl.format(**vals)

一切顺利,直到这里。但是,我现在需要做相反的事情。我必须将像'#F00:#0F0:#00F'这样的字符串转换为我们之前开始使用的值的字典。当然,我只需要splitstrip字符串并获取我需要的值,但如果tpl字符串发生变化,它将失败。

关于我如何做到这一点的任何好主意(如果它甚至可以做到,那就是)?

1 个答案:

答案 0 :(得分:2)

您可以使用正则表达式。 (也许那时你会有两个问题。)

>>> import re
>>> pattern = re.compile('(#[\da-fA-F]{3})')
>>> l = pattern.findall(output)
['#F00', '#0F0', '#00F']
>>> dict(zip(('red', 'green', 'blue'), l))
{'blue': '#00F', 'green': '#0F0', 'red': '#F00'}
>>>