2011-10-25 25 views
55

tratando de averiguar cómo escribir un ciclo si para verificar si una línea está vacía.python: cómo comprobar si una línea es una línea vacía

El archivo tiene muchas cuerdas, y una de ellas es una línea en blanco a separarse de las otras declaraciones (no es un ""; es un retorno de carro seguido de otro retorno de carro creo)

new statement 
asdasdasd 
asdasdasdasd 

new statement 
asdasdasdasd 
asdasdasdasd 

Desde Estoy usando el módulo de entrada de archivos. ¿Hay alguna manera de verificar si una línea está vacía?

Al usar este código parece que funciona, ¡gracias a todos!

for line in x: 

    if line == '\n': 
     print "found an end of line" 

x.close() 

Respuesta

77

Si desea ignorar líneas con solamente un espacio en blanco:

if not line.strip(): 
    ... do something 

La cadena vacía es un valor False.

O si realmente quiere sólo las líneas vacías:

if line in ['\n', '\r\n']: 
    ... do something 
+0

el segundo hace lo que tenía en mente, ¡Gracias! if line in ['\ n']: – user1006198

+1

Si solo está usando 'if line in ['\ n']', debe reemplazar eso con 'if line == '\ n''. –

+1

Me gustaría señalar que la respuesta aceptada tiene un error: si line.strip(): ... #do algo ignora las líneas con espacios en blanco, es decir, espacio, tabulación y línea vacía. Es por eso que solo el segundo trabajó para el poster original: el 'no' tiene que ser eliminado. – niefpaarschoenen

9
line.strip() == '' 

O, si usted no quiere "comer" líneas formadas por espacios:

line in ('\n', '\r\n') 
+1

En la segunda muestra, probablemente también desee comprobar '\ r \ n' para tener en cuenta las terminaciones de línea estilo Windows (CRLF) – poplitea

+0

se olvidó de mencionar que esto se está ejecutando en una máquina Unix, por lo que utiliza la nueva línea sin el \ r. Lo intenté pero no funcionó, lo que funciona para mí: si la línea está en ['\ n']: (no hay idea de por qué la línea == "\ n" no funcionará) – user1006198

+1

@ user1006198: si ' solo estamos revisando '\ n', luego' line == '\ n'' es mejor. Probablemente deberías intentarlo de nuevo y descubrir cuál fue tu problema. – retracile

12

Utilizo el siguiente código para probar la línea vacía con o sin espacios en blanco.

if len(line.strip()) == 0 : 
    # do something with empty line 
1

Creo que es más robusto para utilizar expresiones regulares:

import re 

for i, line in enumerate(content): 
    print line if not (re.match('\r?\n', line)) else pass 

Esto coincidiría en Windows/Unix. Además, si no está seguro acerca de las líneas que contienen solo espacio, puede usar '\s*\r?\n' como expresión

Cuestiones relacionadas