Python - 成语检查字符串是否为空,打印默认值

时间:2009-12-24 01:25:20

标签: python django idioms

我只是想知道,是否有一个Python成语来检查一个字符串是否为空,然后打印一个默认值,如果它是?

(上下文是Django,对于UserProfile的__unicode__(self)函数 - 基本上,我想打印名字和姓氏(如果存在),然后打印用户名(如果它们不存在的话)。

干杯, 维克多

6 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:4)

displayname = firstname + lastname or username
如果名字和姓氏的长度为空白字符串

将起作用

答案 2 :(得分:4)

我认为在模板中可以更好地处理这个问题,例如:

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

使用Django包含的“默认”过滤器。如果您特别关注None值,但又想要允许空值(即''),还有一个“default_if_none”过滤器。 “默认”过滤器将同时触发None值和''值。

以下是Django文档的链接: http://docs.djangoproject.com/en/dev/ref/templates/builtins/#default

答案 3 :(得分:2)

好的,我假设您的意思是__unicode__()。尝试这样的事情(没有经过测试,但真正接近正确):

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)

我刚刚意识到你要求Python成语,而不是Django代码。哦,好吧。

答案 4 :(得分:1)

类似的东西:

name = data.Name or "Default Name"

答案 5 :(得分:0)

我的架构将None作为未设置的名字或姓氏,因此Frederico的答案不起作用。所以:

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