Функция для получения списка всех идентификаторов в шаблоне строки (Python)

Есть ли для стандартной библиотеки string template в Python функция для получения списка всех идентификаторов?

Например, со следующим XML-файлом:

<Text>Question ${PrimaryKey}:</Text>
<Text>Cheat: ${orientation}</Text>

функция вернет что-то вроде PrimaryKey, orientation


person Megool    schedule 23.05.2015    source источник
comment
Итак, вы хотите найти все вхождения ${something} в xml-файле?   -  person geckon    schedule 24.05.2015


Ответы (1)


Вы можете использовать string.Formatter.parse.

from string import Formatter

s="""<Text>Question ${PrimaryKey}:</Text>
<Text>Cheat: ${orientation}</Text>"""


print([ele[1] for ele in Formatter().parse(s) if ele[1]])
['PrimaryKey', 'orientation']
person Padraic Cunningham    schedule 23.05.2015
comment
Это сработало! Так квадратные скобки вокруг фразы создают список ele[1]? - person Megool; 24.05.2015
comment
@YunCHan, он извлекает второй элемент, который является именем заполнителя, если вы print(list(Formatter().parse(s))) увидите, что он возвращает кортежи, содержащие разные элементы, [('<Text>Question $', 'PrimaryKey', '', None), (':</Text>\n<Text>Cheat: $', 'orientation', '', None), ('</Text>', None, None, None)] - person Padraic Cunningham; 24.05.2015