2010-01-25 27 views
7

Bien, aquí hay algunos puntos fáciles. PyBinding vino con este script:La cadena es nula o está vacía

def IsNotNull(value): 
    return value is not None 

Está cerca, pero lo que quiero es esto.

bool IsNotNullOrEmpty(string value) { 
    return (value != null) && (value.Length > 0); 
} 
+0

Bueno, .NET incluye String.IsNullOrEmpty. Funcionaría eso? – ojrac

Respuesta

16

Para comprobar si una cadena está vacía que usaría len. Prueba esto:

def IsNotNull(value): 
    return value is not None and len(value) > 0 
+0

Error de nuevo. ¿Te molestaste intentando este código? –

+0

Ahí va, he retrocedido a mi respuesta original. Eliminé mi publicación y luego la reemplacé con lo que creí que era una solución "Pythonic", que implica el 'no no'. –

+1

-1 Esto no es necesario en Python como None y '' son falsos en Python: http://docs.python.org/library/stdtypes.html#truth-value-testing –

0

creo,

if IsNotNull(value) { 

es equivalente a

if not value: 

para cuerdas. entonces creo que la función no es necesaria en Python.

1
def IsNotNullString(s): 
    return bool(s) 

Rules of Python boolean conversion.

+0

No funcionó. Las cadenas vacías todavía regresaron como True. –

+0

@JonathanAllen Acabo de ejecutar esto en el intérprete de Python y funcionó para mí. ¿En qué versión de python obtuviste un True? Estoy usando 2.7.3 – Saurav

5

No debería estar haciendo esto en una función. En su lugar debe sólo tiene que utilizar:

if someStringOrNone: 
+0

No funcionó. Las cadenas vacías todavía regresaron como True. –

+5

Esta es la versión Pythonic preferida y funciona perfectamente para las cadenas de Python. La única razón por la cual podría no funcionar para usted es si está pasando algo del tipo .NET que no es compatible con cadenas de Python para la función. –

+0

@Jonathan No creo que esté pasando cadena vacía a la prueba. Como Ignacio te mostró, funciona para cadenas vacías. ¿Puede mostrarnos el código donde la cadena vacía se evalúa como Verdadero? Creo que eso sería un error entonces. –

3

Si se trata de IronPython, entonces por qué no utilizar la implementación predeterminada de IsNullOrEmpty de System.String?

import clr 
clr.AddReference('System') 
import System 
System.String.IsNullOrEmpty('') # returns True 
System.String.IsNullOrEmpty(None) # returns True 
System.String.IsNullOrEmpty('something') # returns False 
Cuestiones relacionadas