40

学习 Python 有点卡住。

我正在尝试将变量设置为 equalint(stringToInt)或者如果字符串为空,则设置为None.

我尝试这样做,variable = int(stringToInt) or None但如果字符串为空,它将出错,而不是仅将其设置为无。

你知道解决这个问题的任何方法吗?

4

5 回答 5

62

如果你想要一个像你尝试过的单线,那就去吧:

variable = int(stringToInt) if stringToInt else None

仅当不为空且为“数字”时才分配variable给。int(stringToInt)如果,例如stringToIntis 'mystring', aValueError将被提出。

为了避免ValueErrors,只要您不制作生成器表达式,请使用 try-except:

try:
    variable = int(stringToInt)
except ValueError:
    variable = None
于 2013-09-04T21:01:16.547 回答
23

我认为这是最清晰的方法:

variable = int(stringToInt) if stringToInt.isdigit() else None
于 2013-09-04T21:12:09.487 回答
18

使用它生成异常的事实:

try:
  variable = int(stringToInt)
except ValueError:
  variable = None

variable这具有绑定到None其他常见错误的令人愉快的副作用:stringToInt='ZZTop'例如。

于 2013-09-04T21:00:58.750 回答
4

以下是一些选项:

捕获异常并处理它:

try:
    variable = int(stringToInt)
except ValueError, e:
    variable = None

这并不是那么特别,请考虑一下:

   variable = None
   if not stringToInt.isdigit():
       variable = int(stringtoInt)
于 2013-09-04T21:02:40.243 回答
2

这会将 stringToInt 解析为 int 如果它是有效的,如果它是 '' 或 None 则返回原始值

variable = stringToInt and int(stringToInt)
于 2021-01-31T13:38:35.780 回答