Datetime-Zeichenfolgenformatausrichtung

8

In Python 2.7 möchte ich datetime-Objekte mit einer string-formatierten Vorlage drucken. Aus irgendeinem Grund wird die Zeichenfolge nicht korrekt gedruckt, wenn links- / rechtsbündiges Recht verwendet wird.

%Vor%

Dies wird resultieren:

%Vor%

Anstelle von

%Vor%

Gibt es einen Trick, um Datetime-Objekte mit Zeichenfolgenformatvorlagen zu drucken?

Es scheint zu funktionieren, wenn ich das Datetime-Objekt in str ()

erzwinge %Vor%

Aber ich möchte das lieber nicht machen, da ich versuche, eine Liste von Werten zu drucken, von denen einige keine Zeichenfolgen sind. Der Sinn einer String-Vorlage besteht darin, die Elemente in der Liste zu drucken.

Fehle ich etwas an der Formatierung von Strings oder sieht das für jeden wie ein Python-Bug aus?

LÖSUNG

@mgilson wies auf die Lösung hin, die ich in der Dokumentation verpasst habe. Link

  

Derzeit werden zwei Conversion-Flags unterstützt: '! s', das str () aufruft   auf den Wert und '! r', die repr () aufruft.

     

Einige Beispiele:

%Vor%     
Marcel Wilson 28.06.2013, 15:34
quelle

3 Antworten

4

Das Problem hier ist, dass datetime Objekte eine __format__ Methode haben, die im Grunde nur ein Alias ​​für datetime.strftime ist. Wenn Sie die Formatierung durchführen, wird der Formatfunktion der String '>25' übergeben, der, wie Sie gesehen haben, dt.strftime('>25') nur '>25' zurückgibt.

Um dies zu umgehen, geben Sie hier an, dass das Feld explizit mit !s :

als String formatiert werden soll %Vor%

(getestet auf Python 2.6 und 2.7).

    
mgilson 28.06.2013, 15:44
quelle
2

datetime.datetime hat Format Methode . Sie müssen es konvertieren str.

%Vor% %Vor%     
falsetru 28.06.2013 15:43
quelle
1

Versuchen Sie Folgendes:

%Vor%

Es funktioniert, indem zuerst die datetime -Objekte in eine Zeichenkette umgewandelt werden, die dann mit der format -Methode ohne Probleme formatiert werden kann.

    
Óscar López 28.06.2013 15:48
quelle