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

[0] Índice de Mensajes

Ir a la versión completa