Platzhalter im String ersetzen.

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
jesse
User
Beiträge: 15
Registriert: Mittwoch 26. September 2012, 10:12

Hi,

es gibt doch in vielen Programmen die Möglichkeit, Ausgaben mit Platzhalter zu versehen. Beispiel soll der Datums-Befehl date sein. Hier stehen bspw. %h, %m, %s usw. für Stunde, Minute und Sekunde. Hat Python hierfür ein Modul, wenn man selbst einen solchen Muster-String hat und darin die Platzhalter ersetzen will? Mit regulären Ausdrücken komme ich nicht so ganz weiter...

Jesse
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Willkommen im Forum!

Nun da gibt es classic String Formatting: http://docs.python.org/library/stdtypes ... formatting
neueres String Formatting: http://docs.python.org/library/stdtypes.html#str.format
und Template Strings: http://docs.python.org/library/string.h ... te-strings

Such dir was aus.
BlackJack

@jesse: Wenn ein Programm solche Platzhalter für Datumsangaben anbietet, also insbesondere die von Dir genannten, dann reicht es in der Regel einfach nur die Syntax der C-Funktion `strftime()`, die in ``time.h`` deklariert ist, an den Benutzer weiter. Python macht das mit `time.strftime()`/`datetime.datetime.strftime()` genau so. Nur für den Fall, dass Du jetzt speziell etwas für Zeit- und Datumsangaben gesucht hast.

Edit: Mit regulären Ausdrücken könntest Du Dir auch etwas basteln, denn `re.sub()` kann man als Ersetzungsparameter auch eine Funktion übergeben, die für jeden Treffer mit eben jenem aufgerufen wird und eine Zeichenkette zurück geben muss, die dann als Ersetzung verwendet wird. Das würde ich aber nur machen wenn man mit `string.Template` nicht weiter kommt, denn sonst implementiert man das bloss selber noch einmal nach.
jesse
User
Beiträge: 15
Registriert: Mittwoch 26. September 2012, 10:12

Danke erst einmal. Template Strings hatte ich gesucht.

@BlackJack: Das mit dem Befehl date sollte nur Beispiel sein. Ich will auf gleicher Weise eigene Werte ausgeben, so dass die Ausgabe angepasst werden kann.
Antworten