+1 para Alejandro

On 6/12/07, Alejandro Di Battista <[EMAIL PROTECTED]> wrote:
> Se obviamos el control de errores hay una solucion elegante...
>
> 1# Banco = Struct.new(:banco, :matricula, :latitud, :ems, :a0, :a1, :a2,
> :a3, :a4, :a5, :a6, :a7, :a8, :a9)
> 2# bancos = File.open("c:/datos.txt").map{|linea|
> Banco.new(linea[0..30].strip, *linea[31..-1].split)}
> 3# bancos.each{|x| puts x.banco, x.matricula}
>
> En la linea 1# crea una estructura para almacenar los datos... de manera que
> luego se pueda acceder x.banco o x.matricula, etc. (como vemos en la linea
> #3)
>
> En la linea 2# Abre el archivo, lo procesa linea por linea convirtiendola
> (via map) en un instancia de la clase Banco, asume que el primer campo tiene
> una logitud fija y los siguientes campos estan separados por un espacio en
> blanco (el "*" delante de linea expande el array resultante en una lista de
> parametros)
>
> La linea 3# es solo para probar que todo funcionó !
>
> Ruby es maravilloso!!! y Rails es increiblemente bello!!!
>
> :)
>
>
>
>
> On 6/12/07, Leandro Marcucci <[EMAIL PROTECTED]> wrote:
> > El 12/06/07, Fernando Castañeda <[EMAIL PROTECTED]> escribió:
> > >
> > >
> > > Hola grupo :
> > > Soy nuevo en ruby y aca va mi primer pregunta.
> > > Tengo el sig. archivo de txt que se deben procesar dariamente con el
> sig.
> > > formato.
> > > Ej : de un par de lineas que vienen:
> > >
> > > MAREJADA                       0001107 051215 4151.440S 06150.960W 224
> 09.0
> > > 0000 005 G 470115510 08466 029 701006062
> > > CENTAURO 2000                  0000482 051215 4215.640S 06133.160W 096
> 04.0
> > > 0000 005 G 470111210 08466 067 701019000
> > > ELSA LIBERTAD                  0001499 051215 4320.320S
> 06503.640W 327 00.0
> > > 0000 005 G 470181191 08473 213 000000000
> > > QUE LE IMPORTA                 0001355 051215 4320.440S 06503.440W 343
> 00.1
> > > 0000 005 G 470181217 08473 227 701000705
> > > ATREVIDO                       0000145 051215 4217.080S 06136.400W 080
> 04.0
> > > 0000 005 G 470111910 08466 014 701006040
> > >
> > > El problema me surge con la que es mi primer atributo de la clase, el
> nombre
> > > del barco.
> > > Con la instruccion  line.chomp.split(" ") separo por especios en blanco,
> > > pero no me sirve para los buques cuyos  nombres a su vez están separados
> por
> > > espacios como "QUE LE IMPORTA" o "ELSA LIBERTAD" ya que pasan a ser otro
> > > atributo en esos casos particulares.
> > > Hay alguna manera de hacerlo con expresiones regulares.
> > >  Muchas gracias por su ayuda.
> > > Ej. del codigo que implemento.
> > >
> > >
> > > def procesar
> > >
> > > File.open("c:/vts/txt/d.txt") do |file|
> > >
> > > while line = file.gets
> > >
> > > barco, matricula, latitud,  longitud, ems,  rmsi, etc=
> line.chomp.split(" ")
> > >
> > > # codigo que crea el objeto movimientobuque para cada linea procesada
> > >
> > > end
> > >
> > > end
> > >
> > > Saludos desde Mar del Plata
> > >
> > > Fernando Castañeda.-
> > >
> > >
> > > _______________________________________________
> > > ruby mailing list
> > > [email protected]
> > >
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
> > >
> > >
> >
> > Llego un poco tarde al thread y veo (segun como me presenta gmail el
> > extracto del archivo de texto que pusiste) que luego del nombre del
> > barco hay una tabulacion. Si no fuera asi, podes tomar los valores de
> > atras para adelante, parseando cada linea dividiendola en los 6
> > ultimos espacios y tomando cada parte como uno de tus datos, quedando
> > el nombre del barco y todos sus espacios en el ultimo segmento.
> >
> > Espero que sirva, salu2.
> > _______________________________________________
> > ruby mailing list
> > [email protected]
> >
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
> >
>
>
>
> --
> Agilsoft
> (381) 431-4290 | Maipú 140 Of. 30
> (4000) Tucumán | Argentina
> _______________________________________________
> ruby mailing list
> [email protected]
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
>
>
_______________________________________________
ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a