_______________________________________________
Python-es mailing list
Pyth...@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/
El 7 de diciembre de 2010 09:43, (P@vel) <pdl...@uci.cu> escribió:Tengo el siguiente problema, estoy leyendo un fichero pero quiero que al leer una linea en blanco no haga nada, estaba probando el codigo de abajo pero me imprime la linea en blanco cada vez que la encuentra
f = open('/home/pavel/Escritorio/char/file.txt')
for line in f.readlines():
if len(line)==1: # if line=='\n'
continue
else:
print line[0]+line[1]+line[2]+line[3]+line[4]+line[5]+line[6]+line[7]+" "+line[24]+line[32]
f.close()
el problema es que una linea en "blanco" puede estar llena con espacios y por lo tanto medir mas de 1,prueba usar el método strip sin argumentos para eliminar todos los espacios de la linea,si solo contiene espacios en blanco la expresión se evaluara como falsa:if not line.strip():continue
> f = open('/home/pavel/Escritorio/char/file.txt')
> for line in f.readlines():
> if len(line)==1: # if line=='\n'
> continue
> else:
> print line[0]+line[1]+line[2]+line[3]+line[4]+line[5]+line[6]+line[7]+"
> "+line[24]+line[32] f.close()
Una posible refactorización más pythonica:
for line in open(path):
if not line.isspace():
print(line[:8] + " " + line[24] + line[32])
Y no estaría mal comprobar que la línea tiene una longitud mayor a 32 antes de
ponerse a extraer caracteres.
Es posible que tengas problemas con los finales de línea. Puedes usar
el modo universal "rU" para evitar este problema.
Ya han dado varias soluciones en otros mensajes. Aquí va la mía:
ruta='/home/pavel/Escritorio/char/file.txt'
fich=(line[:-1] for line in open(ruta,"rU") if not line.isspace())
for line in fich:
print(line[:8]+" "+line[24]+line[32])