Генерация значений для строк шаблона стиля str.format из форматированного вывода

1

Это может показаться странным требованием, но я ищу хорошую реализацию для этого.

У меня есть диктофон, как

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 строка должна измениться.

Любые хорошие идеи о том, как я могу это сделать (если это может быть сделано, то есть)?

Теги:

1 ответ

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'}
>>>
  • 0
    +1 Красиво и просто, мне это нравится :). Кроме того, у нас есть две проблемы, во-вторых, нам нужно регулярное выражение, которое правильно соответствует строкам подстановки ;)
  • 0
    Вы хотите что - то вроде parse('{red}:{green}:{blue}', '#F00:#0F0:#00F') , который возвращает vals ? Это более сложно, почему бы вам не написать решение и опубликовать его здесь, и оно может быть улучшено / исправлено при необходимости.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню