Search code examples
pythonstringtemplate

Function to get list of all identifiers in String Template (Python)


For standard library string template in Python, is there a function to get a list of all identifiers?

For example, with the following xml file:

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

the function will return something like PrimaryKey, orientation


Solution

  • You can use 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']