Python字符串拆分可能的无值

Jer*_*oen 0 python string django split nonetype

我正在构建一个json,我想在ID的数组中分割逗号分隔列表ID并放入json中.问题是列表在数据库中也可以是NULL,因此在python中是None

部分代码如下:

'followupsteps': [{
    'id': stepid,
} for stepid in string.split(step.followupsteps, ',') 
Run Code Online (Sandbox Code Playgroud)

我尝试过这样的事情:

'followupsteps': [{
    'id': stepid,
} for stepid in (string.split(step.followupsteps, ',') if not None else [])]
Run Code Online (Sandbox Code Playgroud)

'followupsteps': [{
    'id': stepid,
} for stepid in string.split((step.followupsteps if not None else ''), ',')]
Run Code Online (Sandbox Code Playgroud)

它们都导致Django/python错误:异常值:'NoneType'对象没有属性'split'

有任何想法吗?

Mar*_*ers 6

你想测试if是否step.followupsteps为布尔值true:

'followupsteps': [] if not step.followupsteps else [{
    'id': stepid,
} for stepid in step.followupsteps.split(',')]
Run Code Online (Sandbox Code Playgroud)

你是测试if是否not None为True,它恰好是:

>>> bool(not None)
True
Run Code Online (Sandbox Code Playgroud)

not step.followupsteps如果它是一个空字符串None,数字0或一个空容器,它将为True .你也可以使用,if step.followupsteps is None但为什么限制自己.

另一种拼写方式:

'followupsteps': [{
    'id': stepid,
} for stepid in (step.followupsteps.split(',') if step.followupsteps else [])]
Run Code Online (Sandbox Code Playgroud)

但是首先只返回一个空列表,你就完全避免了空列表理解.