如果在python中该字段为空,如何防止将变量更改为“ None”

时间:2018-06-28 19:35:18

标签: python openpyxl

我正在尝试读取excel文件中的单元格并将其分配给变量。当单元格为空白时,问题就来了。然后为变量分配字符串“ None”。我希望它为空白(“”)。有没有一种简单的方法可以在Python的一行中做到这一点?像这样吗?

strings.xml

我的目标是多次实现而无需编写(sheet.cell(row = 3,column = 2).value)。由于我还有很多其他变量需要检查,因此很难维护。

3 个答案:

答案 0 :(得分:4)

如果您有一个值为“ None”的单元格,则此方法很危险。最Python的方法是两行:

v = sheet.cell(row=3, column=2).value
a = str(v) if v is not None else ''

多次写入sheet.cell(row=3, column=2).value会导致不必要的对工作表对象的访问,因此避免它的目标是好的。但是,将它写成一行的目标应该排在写得好的目标之后。

答案 1 :(得分:1)

几个单行代码,它们不会替换旧的“先分配再测试”的2行方法:

创建一个生成器并在一个元素列表上进行迭代,该列表允许分配给一个变量,然后对该变量使用三进制,使用next进行一次迭代并获取值:

v = next("" if x is None else str(x) for x in [sheet.cell(row=3, column=2).value])

也许更有趣:如果值不能为0,则可以使用or

v = str(sheet.cell(row=3, column=2).value or "")

现在值得保存一行吗?我让你知道。

答案 2 :(得分:0)

您可以将其分成几行,感觉会更好,并且有几种选择:

res = str(sheet.cell(row=3, column=2).value)
a = "" if res == "None" else res

或其他选项,例如:

a = {"None" : ""}.get(res, res)