Python字符串到Int或None

use*_*811 25 python

学习Python并且有点卡住了.

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

我试着这样做variable = int(stringToInt) or None但是如果字符串为空则会出错而不是仅将其设置为None.

你知道这个吗?

Tha*_*Guy 44

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

variable = int(stringToInt) if stringToInt else None
Run Code Online (Sandbox Code Playgroud)

这将仅分配variableint(stringToInt)非空且是"数字".例如,如果stringToInt'mystring',ValueError将提出一个.

避免 ValueError s,只要不进行生成器表达式,请使用try-except:

try:
    variable = int(stringToInt)
except ValueError:
    variable = None
Run Code Online (Sandbox Code Playgroud)

  • 这对新手来说有详细的解释. (5认同)
  • 当stringToInt = 0时,单线返回None。最好是:如果stringToInt不为None None,则为`variable = int(stringToInt)。 (2认同)

Rob*_*obᵩ 11

使用它生成异常的事实:

try:
  variable = int(stringToInt)
except ValueError:
  variable = None
Run Code Online (Sandbox Code Playgroud)

这具有约束力愉快的副作用variableNone其他常见的错误:stringToInt='ZZTop',例如.


mol*_*are 11

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

variable = int(stringToInt) if stringToInt.isdigit() else None
Run Code Online (Sandbox Code Playgroud)

  • isdigit 是不安全的,因为它将 unicode 2 的幂 ² 识别为数字。isdecimal 是安全的方法。所以: `variable = int(stringToInt) if stringToInt and stringToInt.isdecimal() else None` (4认同)
  • 这在stringToInt为None的情况下不起作用,因为它没有isdigit() (2认同)
  • 您可以通过检查None来加强它,例如`string = Int(stringToInt)如果stringToInt和stringToInt.isdigit()else None` (2认同)

小智 5

如果 stringToInt 有效,则将其解析为 int;如果为 '' 或 None,则返回原始值

variable = stringToInt and int(stringToInt)
Run Code Online (Sandbox Code Playgroud)