Python字符串在可能的无值上拆分
我正在构建一个json,我想在ID数组中拆分一个逗号分隔的列表ID,然后放入json。问题是,该列表在数据库中也可以为NULL,因此在python中没有 部分代码如下所示:Python字符串在可能的无值上拆分,python,django,string,split,nonetype,Python,Django,String,Split,Nonetype,我正在构建一个json,我想在ID数组中拆分一个逗号分隔的列表ID,然后放入json。问题是,该列表在数据库中也可以为NULL,因此在python中没有 部分代码如下所示: 'followupsteps': [{ 'id': stepid, } for stepid in string.split(step.followupsteps, ',') 我试过这样的方法: 'followupsteps': [{ 'id': stepid, } for stepid in (stri
'followupsteps': [{
'id': stepid,
} for stepid in string.split(step.followupsteps, ',')
我试过这样的方法:
'followupsteps': [{
'id': stepid,
} for stepid in (string.split(step.followupsteps, ',') if not None else [])]
及
它们都会导致Django/python错误:
异常值:
“非类型”对象没有属性“拆分”
有什么想法吗?您的三元陈述扩展到:
if not None:
step.followupsteps
else:
''
notnone
的计算结果总是True
,因此这相当于根本不编写if/else
语句
如果step.followupsteps else(默认内容),您希望编写
(要计算的内容)
,利用None
对象的“错误”。或者,如果更方便的话,(默认内容)如果不是步骤。followupsteps else(要计算的内容)
您的三元语句扩展为:
if not None:
step.followupsteps
else:
''
notnone
的计算结果总是True
,因此这相当于根本不编写if/else
语句
如果step.followupsteps else(默认内容),您希望编写
(要计算的内容)
,利用None
对象的“错误”。或者,如果更方便的话,(默认值)if not step.followupsteps else(要计算的值)
您想测试step.followupsteps
是否为布尔值:
'followupsteps': [] if not step.followupsteps else [{
'id': stepid,
} for stepid in step.followupsteps.split(',')]
相反,您正在测试而不是None
是否为真,这恰好是:
>>> bool(not None)
True
不是步骤。如果是空字符串、None
、数字0或空容器,则followupsteps
将为真。如果step.followupsteps为None,也可以使用,但为什么要限制自己呢
另一种拼写方法:
'followupsteps': [{
'id': stepid,
} for stepid in (step.followupsteps.split(',') if step.followupsteps else [])]
但是,只需首先返回一个空列表,就可以完全避免空列表理解。您想测试步骤。followupsteps
是否为布尔值:
'followupsteps': [] if not step.followupsteps else [{
'id': stepid,
} for stepid in step.followupsteps.split(',')]
相反,您正在测试而不是None
是否为真,这恰好是:
>>> bool(not None)
True
不是步骤。如果是空字符串、None
、数字0或空容器,则followupsteps
将为真。如果step.followupsteps为None,也可以使用,但为什么要限制自己呢
另一种拼写方法:
'followupsteps': [{
'id': stepid,
} for stepid in (step.followupsteps.split(',') if step.followupsteps else [])]
但是,只要先返回一个空列表,就可以完全避免空列表理解。有没有办法检查变量在循环之前是否为None
?有没有办法检查变量在循环之前是否为None
?@JonClements:返回一个包含一个空字符串的列表。最后的结果是[{'id':'}]
而不是[]
@JonClements:返回一个包含一个空字符串的列表。您最终得到的是[{'id':'}]
,而不是[]
。