Seite 1 von 1

Ausgabe von (None) unterdrücken

Verfasst: Mittwoch 8. Juli 2009, 18:21
von normic
Hallo,
ich steh' hier grad etwas auf dem Schlauch. Ich möchte dass statt None eben ein leerer String ausgegeben wird.

Zur Erläuterung ein kleines Beispiel:

Code: Alles auswählen

class PhoneNumber(models.Model):
    countrycode = models.ForeignKey('Country')
    areacode = models.IntegerField()
    subscriber = models.IntegerField()
    extension = models.IntegerField(null=True, blank=True)
    
    def __unicode__(self):
        return u'%s %s %s %s' % (Country.get_callingcode(self.countrycode), \
               self.areacode, self.subscriber, self.extension)
Ist in der extension nichts eingetragen wird - natürlich - None angezeigt.
Und ich kenne keinen Platzhalter für %s der entweder nichts _oder_ String ausgibt.

Jemand eine Idee?

Gruß,
Michael

Verfasst: Mittwoch 8. Juli 2009, 18:30
von birkenfeld
Platzhalter gibts keinen, aber einen einfachen Trick:

Code: Alles auswählen

a = None
print "%s" % (a or "")
Du solltest dir aber sicher sein, dass `a` nicht auch andere Werte annehmen kann, die Python als boolesch False interpretiert, z.B. leere Listen oder Nullen. In dem Fall hilft die Conditional expression (Py>=2.5):

Code: Alles auswählen

a = None
print "%s" % (a if a is not None else "")

Verfasst: Mittwoch 8. Juli 2009, 18:38
von normic
Das nenne ich mal eine schnelle und klare Antwort.

Dankeschön.

Schönen Abend noch,
Michael