Ich möchte eine Liste aller möglichen Schlüsselwortargumente erhalten, die eine Zeichenfolgevorlage in einer Ersetzung verwenden könnte.Get keys from template
Gibt es eine Möglichkeit, dies anders als re?
mag ich so etwas wie dies zu tun:
text="$one is a $lonely $number."
keys = get_keys(text)
# keys = ('one', 'lonely', 'number')
Ich bin ein einfaches Mad-lib-ähnliches Programm zu schreiben, und ich möchte mit entweder string.format oder Template strings Vorlage Substitution durchzuführen. Ich möchte die "Geschichte" schreiben und mein Programm eine Vorlagendatei aller "Schlüsselwörter" (Substantive, Verben usw.) erstellen lassen, die ein Benutzer produzieren müsste. Ich weiß, dass ich das mit regulären Ausdrücken machen kann, aber ich frage mich, ob es eine alternative Lösung gibt? Ich bin offen für Alternativen zu String.format und String-Vorlage.
Ich dachte, es wäre eine Lösung, aber ich habe es nicht in einer schnellen Suche gefunden. Ich habe diese Frage gefunden, reverse template with python, aber es ist nicht wirklich, was ich suche. Es bestätigt nur, dass dies mit re
getan werden kann.
EDIT:
Ich sollte anmerken, dass $$
ist eine Flucht für '$', und ist kein Token ich will. $$5
sollte auf "$ 5" rendern.
So ziemlich, was ich gesucht habe. Vielleicht braucht meine Frage Arbeit, aber ich wollte das Rad nicht neu erfinden. Vielen Dank. – Yann
Dies funktioniert nicht, wenn die Zeichenfolge mit einem Schlüssel beginnt. Versuchen Sie das oben genannte mit '{foo} test' – syntacticmarmalade
@syntacticmarmalade Funktioniert gut für mich auf Python 3.6. Wenn Sie meinen, dass die Liste am Ende eine "None" hat, liegt das daran, dass die Zeichenfolge * nicht * mit einem Schlüssel endet. Sie können nur die Instanzen von 'None' filtern. –