Ausgabe von (None) unterdrücken

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
normic
User
Beiträge: 12
Registriert: Mittwoch 8. Juli 2009, 17:28
Kontaktdaten:

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
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

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 "")
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
normic
User
Beiträge: 12
Registriert: Mittwoch 8. Juli 2009, 17:28
Kontaktdaten:

Das nenne ich mal eine schnelle und klare Antwort.

Dankeschön.

Schönen Abend noch,
Michael
Antworten