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
Platzhalter im String ersetzen.
- 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.
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.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
@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.
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.