首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何防止python中字段为空时变量被更改为"None“

如何防止python中字段为空时变量被更改为"None“
EN

Stack Overflow用户
提问于 2018-06-29 03:35:18
回答 3查看 387关注 0票数 4

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

代码语言:javascript
复制
  a = str(sheet.cell(row=3, column=2).value) if (a != "None") else: a = ""

我的目标是在不多次编写(sheet.cell(row=3,column=2).value)的情况下实现这一点。因为我有很多其他的变量需要检查,这使得维护变得更加困难。

EN

回答 3

Stack Overflow用户

发布于 2018-06-29 03:42:57

如果你有一个单元格的值是"None“,那么你的方法是危险的。最典型的方式是用两行代码:

代码语言:javascript
复制
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对象进行不必要的访问,因此避免这种情况的目标是好的。然而,你的目标应该是在一行中写好它,而不是写好它。

票数 4
EN

Stack Overflow用户

发布于 2018-06-29 03:51:44

几个一行程序,它们不会取代一个很好的旧的“然后赋值然后测试”的两行代码方法:

创建一个生成器并迭代一个单元素列表,它允许赋值给一个变量,然后在这个变量上使用三元,使用next迭代一次并获得值:

代码语言:javascript
复制
v = next("" if x is None else str(x) for x in [sheet.cell(row=3, column=2).value])

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

代码语言:javascript
复制
v = str(sheet.cell(row=3, column=2).value or "")

现在是否值得保存一行代码呢?我会让你自己想办法的。

票数 1
EN

Stack Overflow用户

发布于 2018-06-29 03:40:45

你可以把它分成几行,这样感觉会更好,而且你有几个选择:

代码语言:javascript
复制
res = str(sheet.cell(row=3, column=2).value)
a = "" if res == "None" else res

或者其他选项,例如:

代码语言:javascript
复制
a = {"None" : ""}.get(res, res)   
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51090140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档