检查多个变量是否为空,只替换为空的

Check if multiple variables are empty and replace only those who are empty

大家好,我需要一些帮助,这可能是一件容易的事,但由于我是编程新手而且 python 我还没有达到目标,如果有人能帮助我,那就太棒了..

所以我有多个从 openpyxl 获得的变量,如果它们是 None,我需要单独替换,我尝试了下面的方法,但是如果一个变量是 None,它将替换所有变量他们,我只需要替换那些 None :

    DU = sheet['B18'].value
    bl_n = sheet['G17'].value #on excel is None
    incoterm = sheet['B23'].value #on excel is None
    transporter = sheet['G23'].value

if None in (bl_n,incoterm,DU, transporter):
    bl_n="none"
    incoterm="none"
    DU ="none"
    transporter="none"
else:
    DU = sheet['B18'].value
    bl_n = sheet['G17'].value
    incoterm = sheet['B23'].value
    transporter = sheet['G23'].value`

输出:

    DU - none
    bl_n - none
    incoterm - none
    transporter - none

我需要什么:

    DU - 5555555555555555
    bl_n - none
    incoterm - none
    transporter - x124455714

提前致谢

我会按以下方式使用 map

DU,bl_n,incoterm,transporter = map(lambda x: "none" if x is None else x, [DU,bl_n,incoterm,transporter])

逐一检查:

bl_n = "none" if bl_n is None else bl_n
incoterm = "none" if incoterm is None else incoterm
DU = "none" if DU is None else DU
transporter = "none" if transporter is None else transporter

您可以在初始变量分配期间简单地使用 or

DU = sheet['B18'].value or "none"
bl_n = sheet['G17'].value or "none" #on excel is None
incoterm = sheet['B23'].value or "none" #on excel is None
transporter = sheet['G23'].value or "none"

为了进一步说明,or 是一个 boolean 运算符。它将前后的表达式转换为 boolean。如果第一个表达式的计算结果为 True,即它不是 None,则它是 returns 第一个值,否则返回第二个值,在本例中始终为 True

编辑:正如我刚刚意识到的,某些情况下的潜在陷阱。由于 or 检查真值,所有 0FalseNone 将导致返回第二个表达式。