2009-12-24 4 views
6

Mi chiedo solo, esiste un linguaggio Python per verificare se una stringa è vuota e quindi stampare un valore predefinito se lo è?Python - Idiom per verificare se la stringa è vuota, stampa predefinita

(Il contesto è Django, per la funzione __unicode__(self) per UserProfile - in pratica, voglio stampare il nome e il cognome, se esiste, e quindi il nome utente se non esistono entrambi).

Cheers, Victor

risposta

4
displayname = firstname + lastname or username 

funzionerà se Nome e cognome ha 0 lunghezza della stringa vuota

1

Qualcosa di simile:

name = data.Name or "Default Name" 
2

Ok, sto supponendo che volevi dire __unicode__() metodo. Provare qualcosa di simile (non testato, ma vero e proprio vicino ad essere corretto):

from django.utils.encoding import smart_unicode 
def __unicode__(self): 
    u = self.user 
    if u.firstname and u.lastname: 
     return u"%s %s" % (u.firstname, u.lastname) 
    return smart_unicode(u.username) 

Ho appena realizzato che hai chiesto per l'idioma di Python, non il codice di Django. Oh bene.

6
displayname = firstname+' '+lastname if firstname and lastname else username 
+1

mi ha battuto ad esso. +1 baby! – jathanism

+0

+1 La tua risposta è abbastanza gentile di me: P – YOU

+0

Odio concatenare stringhe con un + - non è abbastanza sicuro, specialmente per un campo modificabile dall'utente come il nome e il cognome. – shawnr

0

mio schema avrebbe None come di prima impostata o cognome, quindi la risposta di Frederico non avrebbe funzionato. Quindi:

print ("%s %s" % (firstname, lastname) 
     if not (firstname and lastname) 
     else username) 
4

Penso che questo problema è meglio gestito nei modelli con qualcosa di simile:

{{user.get_full_name | default: user.username}}

Che utilizza Django è incluso "default "filtro. Esiste anche un filtro "default_if_none" se si è specificamente interessati a un valore None, ma si desidera consentire un valore vuoto (ad esempio ""). Il filtro "predefinito" verrà attivato sia su un valore None che su un valore "".

Ecco il link per la documentazione Django su di esso: http://docs.djangoproject.com/en/dev/ref/templates/builtins/#default