这似乎是一个奇怪的要求,但我正在寻找一个很好的实现来做到这一点。
我有像
这样的词典vals = dict(red='#F00', green='#0F0', blue='#00F')
和
之类的字符串tpl = '{red}:{green}:{blue}'
和str.format
输出
output = tpl.format(**vals)
一切顺利,直到这里。但是,我现在需要做相反的事情。我必须将像'#F00:#0F0:#00F'
这样的字符串转换为我们之前开始使用的值的字典。当然,我只需要split
和strip
字符串并获取我需要的值,但如果tpl
字符串发生变化,它将失败。
关于我如何做到这一点的任何好主意(如果它甚至可以做到,那就是)?
答案 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'}
>>>