Bei Verwendung von Python strftime
Gibt es eine Möglichkeit, die erste 0 des Datums zu entfernen, wenn es vor dem 10. liegt, d.h. 01
es 1
? Kann nicht finden ein %
Dingsbums dafür?
Gracias.
Bei Verwendung von Python strftime
Gibt es eine Möglichkeit, die erste 0 des Datums zu entfernen, wenn es vor dem 10. liegt, d.h. 01
es 1
? Kann nicht finden ein %
Dingsbums dafür?
Gracias.
Ich hatte das gleiche Problem und habe festgestellt, dass, wenn man einen Bindestrich zwischen die %
und dem Buchstaben, können Sie die führende Null entfernen.
Zum Beispiel %Y/%-m/%-d
.
Dies funktioniert nur unter Unix (Linux, OS X), nicht unter Windows (einschließlich Cygwin). Unter Windows würden Sie Folgendes verwenden #
z.B. %Y/%#m/%#d
.
Wir können diese Art von Dingen mit der Einführung des format
Methode seit python2.6:
>>> import datetime
>>> '{dt.year}/{dt.month}/{dt.day}'.format(dt = datetime.datetime.now())
'2013/4/19'
Auch wenn es vielleicht den Rahmen der ursprünglichen Frage sprengt, kann man für interessantere Formate Dinge tun wie:
>>> '{dt:%A} {dt:%B} {dt.day}, {dt.year}'.format(dt=datetime.datetime.now())
'Wednesday December 3, 2014'
Und ab Python 3.6 kann dies als eine Inline-formatierte Zeichenkette :
Python 3.6.0a2 (v3.6.0a2:378893423552, Jun 13 2016, 14:44:21)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> dt = datetime.datetime.now()
>>> f'{dt:%A} {dt:%B} {dt.day}, {dt.year}'
'Monday August 29, 2016'
Einige Plattformen unterstützen möglicherweise die Angabe von Breite und Genauigkeit zwischen %
und dem Buchstaben (z. B. 'd' für den Tag des Monats), gemäß http://docs.python.org/library/time.html -- aber es ist definitiv eine nicht-portable Lösung (z.B. funktioniert sie nicht auf meinem Mac;-). Vielleicht können Sie eine Zeichenfolge ersetzen (oder RE, für wirklich böse Format) nach der strftime
um dem abzuhelfen? z.B.:
>>> y
(2009, 5, 7, 17, 17, 17, 3, 127, 1)
>>> time.strftime('%Y %m %d', y)
'2009 05 07'
>>> time.strftime('%Y %m %d', y).replace(' 0', ' ')
'2009 5 7'
Hier ist die Dokumentation der Modifikatoren, die von strftime()
in der GNU C-Bibliothek. (Wie schon gesagt wurde, könnte es nicht portabel sein.) Von Interesse für Sie könnte sein:
%e
anstelle von %d
ersetzt die führende Null im Tag des Monats durch ein LeerzeichenEs funktioniert auf meinem Python (unter Linux). Ich weiß nicht, ob es auf Ihrem funktionieren wird.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.