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

我正在构建一个json,我想在ID数组中拆分一个逗号分隔的列表ID,然后放入json。问题是,该列表在数据库中也可以为NULL,因此在python中没有

部分代码如下所示:

'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':'}]
,而不是
[]