Python字符串到Int或None

时间:2013-09-04 20:59:20

标签: python

学习Python并且有点卡住了。

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

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

你知道怎么回事吗?

5 个答案:

答案 0 :(得分:40)

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

variable = int(stringToInt) if stringToInt else None

仅当variable不为空并且为“数字”时,才会将int(stringToInt)分配给stringToInt。例如,如果'mystring'ValueError,则会引发ValueError

要避免try: variable = int(stringToInt) except ValueError: variable = None s,只要你没有制作生成器表达式,请使用try-except:

{{1}}

答案 1 :(得分:10)

使用它产生异常的事实:

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

这会产生令人愉快的副作用,例如variableNone绑定其他常见错误:stringToInt='ZZTop'

答案 2 :(得分:10)

我认为这是最明确的方式:

variable = int(stringToInt) if stringToInt.isdigit() else None

答案 3 :(得分:1)

以下是一些选项:

抓住异常并处理它:

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

它并不是那么特别,为此负责:

   variable = None
   if not stringToInt.isdigit():
       variable = int(stringtoInt)

答案 4 :(得分:1)

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

variable = stringToInt and int(stringToInt)