我正在尝试读取excel文件中的单元格,并将其赋给一个变量。当单元格为空时,问题就出现了。然后将字符串"None“分配给该变量。我希望它为空("")。在Python中,有没有一种简单的方法可以在一行中做到这一点?像这样的东西?
a = str(sheet.cell(row=3, column=2).value) if (a != "None") else: a = ""
我的目标是在不多次编写(sheet.cell(row=3,column=2).value)的情况下实现这一点。因为我有很多其他的变量需要检查,这使得维护变得更加困难。
发布于 2018-06-29 03:42:57
如果你有一个单元格的值是"None“,那么你的方法是危险的。最典型的方式是用两行代码:
v = sheet.cell(row=3, column=2).value
a = str(v) if v is not None else ''
多次编写sheet.cell(row=3, column=2).value
会导致对sheet对象进行不必要的访问,因此避免这种情况的目标是好的。然而,你的目标应该是在一行中写好它,而不是写好它。
发布于 2018-06-29 03:51:44
几个一行程序,它们不会取代一个很好的旧的“然后赋值然后测试”的两行代码方法:
创建一个生成器并迭代一个单元素列表,它允许赋值给一个变量,然后在这个变量上使用三元,使用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 "")
现在是否值得保存一行代码呢?我会让你自己想办法的。
发布于 2018-06-29 03:40:45
你可以把它分成几行,这样感觉会更好,而且你有几个选择:
res = str(sheet.cell(row=3, column=2).value)
a = "" if res == "None" else res
或者其他选项,例如:
a = {"None" : ""}.get(res, res)
https://stackoverflow.com/questions/51090140
复制相似问题