Ich möchte eine Zeichenfolgendarstellung eines datetime
Objekts erstellen, das einen None
Wert enthalten könnte. Bisher habe ich eine Lösung gefunden, aber ich habe nach einer besseren/saubereren Methode gesucht.Bedingte Zeichenfolgendarstellung basierend auf Variablentyp
Lassen Sie uns sagen, dass ich die beiden folgenden Variablen:
import datetime as dt
a = None
b = dt.datetime(2017, 11, 30)
def str_format(str):
return '{:%Y-%m-%d}'.format(str)
Die folgende würde einen formatierten String zurück:
str_format(b)
'2017-11-30'
Aber die folgenden würde einen Fehler zurück:
str_format(a)
TypeError: unsupported format string passed to NoneType.__format__
Bisher kann ich mit folgender Lösung aufwarten:
def str_format(str):
if isinstance(str, type(None)) is False:
return '{:%Y-%m-%d}'.format(str)
else:
return '{}'.format(str)
str_format(a)
'None'
str_format(b)
'2017-11-30'
Allerdings suchte ich nach einer effizienteren/saubereren Schreibweise der Funktion.
Ich denke, dass es besser ist zu testen, ob Ihr Parameter datetime ist. 'isinstance (b, dt.datetime)', Sie sind sicher, dass Sie den richtigen Typ formatieren – mdlx