Cadena de Python a Int o Ninguno

Aprendiendo Python y un poco estancado.

Estoy tratando de establecer una variable igual a int(stringToInt) o si la cadena está vacía, establezca en None .

Intenté hacer variable = int(stringToInt) or None pero si la cadena está vacía, se producirá un error en lugar de establecerla en Ninguno.

¿Sabes alguna forma de evitar esto?

Si quieres una línea como la que has intentado, sigue con esto:

 variable = int(stringToInt) if stringToInt else None 

Esto asignará la variable a int(stringToInt) solo si no está vacío Y es “numérico”. Si, por ejemplo, stringToInt es 'mystring' , se ValueError un ValueError .

Para evitar ValueError s, siempre y cuando no esté creando una expresión de generador, use try-except:

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

Creo que esta es la forma más clara:

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

Usa el hecho de que genera una excepción:

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

Esto tiene el efecto secundario agradable de vincular la variable a None para otros errores comunes: stringToInt='ZZTop' , por ejemplo.

Aquí hay algunas opciones:

Atrapa la excepción y manéjala:

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

No es realmente tan excepcional, cuenta de ello:

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