Это может показаться странным требованием, но я ищу хорошую реализацию для этого.
У меня есть диктофон, как
vals = dict(red='#F00', green='#0F0', blue='#00F')
и строка типа
tpl = '{red}:{green}:{blue}'
и str.format
Ted выход
output = tpl.format(**vals)
Здесь все хорошо. Однако теперь мне нужно сделать обратное. Я должен повернуть строку, как '#F00:#0F0:#00F'
в dict значений, с которыми мы ранее начали. Конечно, я мог бы просто split
и strip
строку и принимать значения мне нужно, но она не будет выполнена в том случае, tpl
строка должна измениться.
Любые хорошие идеи о том, как я могу это сделать (если это может быть сделано, то есть)?
Вы можете использовать регулярные выражения. (И может быть, тогда у вас будет две проблемы.)
>>> 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'}
>>>
parse('{red}:{green}:{blue}', '#F00:#0F0:#00F')
, который возвращаетvals
? Это более сложно, почему бы вам не написать решение и опубликовать его здесь, и оно может быть улучшено / исправлено при необходимости.