Hallo und guten Morgen!
Ich habe eine Liste, die entweder float-Werte enthält, oder None. Diese Liste soll im Terminal ausgegeben werden.
Gibt es eine einfache Möglichkeit, dass mit print "{}".format() bei None kein Fehler geworfen wird, sondern nur ein "" ausgegeben wird? Ich meine, ohne vorher auf None zu testen oder try...except, sondern als Option von .format().
Danke!
Ingo H.
format() und None
In den Parametern, ja.
Oder auch:
Wobei ich mir gerade nicht sicher bin, ob das konsistent ist.
Code: Alles auswählen
a=None
print("{0}".format((a if a is not None else "",)))
Code: Alles auswählen
a=None
print("{0}".format((a or "")))
@Hase
Als `format`-Option nicht, nein. Wobei ein `None`, anderst als von Dir beschrieben, auch keinen Fehler provoziert:
Zu der von sparrow gezeigten Lösung könnte man das "Problem" auch schon außerhalb lösen:
mutetella
Als `format`-Option nicht, nein. Wobei ein `None`, anderst als von Dir beschrieben, auch keinen Fehler provoziert:
Code: Alles auswählen
>>> print('{}'.format(None))
None
Code: Alles auswählen
>>> def replace_none(iter_, with_):
... for item in iter_:
... yield with_ if item is None else item
...
>>> with_none = [1.2, 3.45, None, 6.9]
>>> for item in replace_none(with_none, ''):
... print('{}'.format(item))
...
1.2
3.45
6.9
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit )
@mutetella
Danke. Ich wollte es nicht komplizierter machen, als es ist. Ja, Python schmeißt in diesem Fall keinen Fehler bei None, aber schreibt halt 'None' hin, und die Benutzer fragen mich dann immer "Was heißt denn Nooonee?" Deshalb sollte einfach nichts dastehen.
Danke. Ich wollte es nicht komplizierter machen, als es ist. Ja, Python schmeißt in diesem Fall keinen Fehler bei None, aber schreibt halt 'None' hin, und die Benutzer fragen mich dann immer "Was heißt denn Nooonee?" Deshalb sollte einfach nichts dastehen.
Man kann sich auch einfach einen neuen Formatter definieren, dann gehen auch Formatierungsanweisungen:
Code: Alles auswählen
class NoneFormatter(object):
def __init__(self, value):
self.value = value
def __format__(self, fmt):
return '' if self.value is None else '{0:{1}}'.format(self.value, fmt)
for value in [4.5, None, 17]:
print('{0:.3f}'.format(NoneFormatter(value))