Я считаю, что это сложный вопрос для слов, отсюда и примеры.Тем не менее, мне в основном дают строки произвольного формата , и мне нужно (эффективно) получить соответствующие значения из базы данных, чтобы динамически построить соответствующий объект отображения.
Учитывая строку формата, ожидающую объект сопоставления, например:
>>> 'Hello, %(first-name)s!' % {'first-name': 'Dolph'}
'Hello, Dolph!'
Я ищу реализацию 'infer_field_names ()' ниже:
>>> infer_field_names('Hello, %(first-name)s! You are #%(customer-number)d.')
['first-name', 'customer-number']
Я знаю, что мог бы написать регулярное выражение(или даже попытаться разобрать сообщения об исключениях!), но я надеюсь, что есть существующий вызов API, который я могу использовать вместо этого? .. *
На основе строки Formatter docs , я подумалбудет работать:
>>> import string
>>> format_string = 'Hello, %(first-name)s! You are #%(customer-number)d.'
>>> [x[1] for x in string.Formatter().parse(format_string)]
[None]
Но это не совсем то, что я ожидал (список field_name
с, согласно документам).