Programación Web y Scripting > Python
Al ejecutar un script me aparece una linea en blanco
(1/1)
tirengarfio:
Hola,
tengo el siguiente script que me elimina cualquier cosa que haya entre lineas que contengan "//inicio-borrar-inicio" y "//fin-borrar-fin". Tambien borra esas mismas lineas que contienen las susodichas cadenas.
--- Código: Text ---import re,fileinput,os for path, dirs, files in os.walk(path): for filename in files: fullpath = os.path.join(path, filename) # open for reading first since we need to get the text out f = open(fullpath,'r') # step 1 data = f.read() patter = re.compile('//inicio-borrar-inicio.*?//fin-borrar-fin', re.I | re.S) data = patter.sub("", data) # step 2 f.close() # *now* open for writing f = open(fullpath, 'w') # step 3 f.write(data) f.close()
Mi problema: tras ejecutar el script sobre esto por ejemplo:
--- Código: Text --- public function preFetchAll(Doctrine_Event $event){ //inicio-borrar-inicio$a = sfContext::getInstance()->getUser()->getAttribute("passw.formulario");var_dump($a);//fin-borrar-finforeach ($this->_listeners as $listener) { $listener->preFetchAll($event);}}
el resultado es este:
--- Código: Text --- public function preFetchAll(Doctrine_Event $event){ foreach ($this->_listeners as $listener) { $listener->preFetchAll($event);}}
Como podeis ver hay un linea en blanco entre "public function..." y "foreach..."
¿Alguien sabe como puedo hacer para que esa linea en blanco no aparezca?
Saludos
Javi
NRM:
hola,
el problema que tienes es que te falta remover el EOL(end of line) que viene después del "//fin-borrar-fin", ya que estas remplazando "//inicio-borrar-inicio.*?//fin-borrar-fin" que incluye los EOL que puede haber entre "//inicio-borrar-inicio" y todo lo que haya en el medio ".?". haciendo la siguiente modificación en el código solucionarías el problema en este caso en particular.
--- Código: Python ---patter = re.compile('//inicio-borrar-inicio.*?//fin-borrar-finn', re.I | re.S)
no se si puede haber casos donde tengas mas información en la misma linea donde se encuentra el "//fin-borrar-fin", de ser asi deberías modificar la regular expression un poco mas.
espero te sea util.
saludos
nrm
pd: siempre recuerda de poner el código completo y asegurate de que funcione, para asi evitarte preguntas sobre este. en este caso con definir la variable path se solucionaba simplemente pero a veces es difícil seguir código de otras personas.
Navegación
Ir a la versión completa