检查多个变量是否为空,只替换为空的
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
检查真值,所有 0
、False
和 None
将导致返回第二个表达式。
大家好,我需要一些帮助,这可能是一件容易的事,但由于我是编程新手而且 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
检查真值,所有 0
、False
和 None
将导致返回第二个表达式。