Python-检查字符串是否为空的习惯用法,打印默认值
我只是想知道,是否有一种Python习惯用法来检查字符串是否为空,然后打印默认值(如果为空) (上下文是Django,用于UserProfile的Python-检查字符串是否为空的习惯用法,打印默认值,python,django,idioms,Python,Django,Idioms,我只是想知道,是否有一种Python习惯用法来检查字符串是否为空,然后打印默认值(如果为空) (上下文是Django,用于UserProfile的\uuuuunicode\uuuuuuuuu(self)函数-基本上,我想打印名字和姓氏(如果存在),然后打印用户名(如果两者都不存在) 干杯, 维克多类似于: name = data.Name or "Default Name" 如果firstname和last name具有0长度的空白字符串,则该方法将起作用。好的,我假设您指的是\uuuuuuu
\uuuuunicode\uuuuuuuuu(self)
函数-基本上,我想打印名字和姓氏(如果存在),然后打印用户名(如果两者都不存在)
干杯,
维克多类似于:
name = data.Name or "Default Name"
如果firstname和last name具有0长度的空白字符串,则该方法将起作用。好的,我假设您指的是
\uuuuuuuuunicode\uuuuuu()
方法。尝试类似的方法(未经测试,但非常接近正确):
我刚刚意识到您要求的是Python习语,而不是Django代码。哦,好吧。我的模式将有
None
作为未设置的名字或姓氏,因此弗雷德里科的答案不起作用。因此:
displayname = firstname+' '+lastname if firstname and lastname else username
print ("%s %s" % (firstname, lastname)
if not (firstname and lastname)
else username )
我认为在模板中使用以下内容可以更好地处理此问题:
name = data.Name or "Default Name"
{{user.get_full_name}默认值:user.username}
它使用Django包含的“默认”过滤器。如果您特别关注none值,但希望允许空白值(即“.”),则还有一个“default_if_none”过滤器。“默认”筛选器将在None值和“”值上触发
这里是Django文档的链接:
我讨厌用++连接字符串——这不够安全,特别是对于用户可编辑的字段,如名字和姓氏。
print ("%s %s" % (firstname, lastname)
if not (firstname and lastname)
else username )