Erhalte Schlüssel aus der Vorlage

8

Ich möchte eine Liste aller möglichen Schlüsselwortargumente erhalten, die eine Zeichenfolgenvorlage in einer Ersetzung verwenden könnte.

Gibt es eine Möglichkeit, dies anders als zu tun?

Ich möchte so etwas tun:

%Vor%

Ich schreibe ein einfaches Mad-lib-ähnliches Programm, und ich möchte die Template-Ersetzung entweder mit string.format oder Template-Strings . 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, dass es eine Lösung dafür geben würde, aber ich habe es bei einer schnellen Suche nicht gefunden. Ich habe diese Frage gefunden, umgekehrte Vorlage mit Python , aber es ist nicht wirklich, was ich suche zum. Es bestätigt nur, dass dies mit re gemacht werden kann.

BEARBEITEN:

Ich sollte beachten, dass $$ ein Escape für '$' ist und kein Token ist, das ich möchte. $ sollte auf "$ 5" rendern.

    
Yann 23.10.2012, 19:04
quelle

7 Antworten

17

Wenn Sie string.format verwenden möchten, sollten Sie die integrierte Klasse string.Formatter in Betracht ziehen, die eine Methode parse() hat:

%Vor%

Weitere Informationen finden Sie hier .

    
Roman Imankulov 23.10.2012, 19:12
quelle
5

Die Klasse string.Template hat das Muster, das als Attribut verwendet wird. Sie können das Muster drucken, um die passenden Gruppen zu erhalten

%Vor%

Und für Ihr Beispiel,

%Vor%     
Joachim Brandon LeBlanc 10.05.2013 17:48
quelle
2

Sie können es einmal mit einem instrumentierten Wörterbuch rendern, das Aufrufe oder ein Standard-Diktat aufzeichnet, und dann überprüfen, was es verlangt.

%Vor%     
Eric 23.10.2012 19:33
quelle
1

Warum möchten Sie reguläre Ausdrücke vermeiden? Sie funktionieren dafür ganz gut:

%Vor%

Für das Templating sollten Sie re überprüfen, es kann mit Callback aufgerufen werden fast das, was du willst.

    
che 23.10.2012 19:10
quelle
1

probiere str.strip() zusammen mit str.split() :

aus %Vor%     
Ashwini Chaudhary 23.10.2012 19:07
quelle
0

Sie könnten versuchen:

%Vor%     
dckrooney 23.10.2012 19:10
quelle
0
%Vor%     
volcano 23.10.2012 19:13
quelle

Tags und Links