2015-12-20 2 views
0

Я создаю поисковую систему на основе регулярных выражений.Прокрутите все значения вложенных словарей и измените значение критериев соответствия

Например, если запрос соответствует (?P<filename>\[email protected]\d+), тогда я хочу запустить запрос {"table": "records", "filter": {"filename": "*filename"}}. Но перед этим я хочу заменить «* filename» на «2786 @ 20150510201045».

Так что в основном я хочу прокручивать вложенный словарь и заменять все, начиная с *, значением из соответствующей группы с именем regex. Ближайший я нашел Loop through all nested dictionary values?

+0

Вы должны добавить ожидаемый результат –

ответ

0
def myprint(d, groups): 
    new_d = {} 
    for k, v in d.items(): 
     if isinstance(v, dict): 
      new_d[k] = myprint(v, groups) 
     elif isinstance(v, str): 
      new_d[k] = groups[v[1:]] if v.startswith('*') else v 
     else: 
      new_d[k] = v 
    return new_d 
Смежные вопросы