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

Responder a