es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Problema al escribir un archivo .csv con Ruby.

Estoy aprendiendo Ruby y tengo este problema:
Tengo un problema al escribir un archivo .CSV a partir de un archivo .txt.
Este es mi código Ruby:

require ‘csv’

class Plantas <
Struct.new(:identifier, :code, :lang, :fullname)
end

f = File.open(“planta.txt”, “r”)

f.each_line { |line|
fields = line.split(‘,’)
newPlant = Plantas.new

newPlant.identifier = fields[0].tr_s(‘”‘, ”).strip
newPlant.code = fields[2].tr_s(‘”‘, ”).strip
newPlant.lang = fields[3].tr_s(‘”‘, ”).strip
newPlant.fullname = fields[10].tr_s(‘”‘, ”).strip

str = "#{newPlant.identifier} #{newPlant.code} #{newPlant.lang} #{newPlant.fullname}" #líneas a imprimir

CSV.open("plantas.csv", "w") do |csv|
    csv << [str]
end

}

Y este es mi archivo .txt:

“identifier”,”datatype”,”code”,”lang”,”langno”,”preferred”,”status”,”creation”,”modification”,”country”,”fullname”,”authority”,”shortname”
“N1952″,”PFL”,”LEECO”,”la”,”1″,”0″,”N”,”06/06/2000″,”09/03/2010″,””,”Leea coccinea non”,”Planchon”,”Leea coccinea non”
“N51170″,”PFL”,”CAWUR”,”en”,”4″,”0″,”N”,”28/02/2002″,”24/08/2010″,””,”Toddy palm”,””,”Toddy palm”

Y este es el resultado en el archivo .csv:

N51170 CAWUR en Toddy palm

Solo quiero que el código me imprima todas las líneas del archivo .csv sin ‘ ” ‘ y ‘,’.
¿Alguien puede ayudarme? ¡Gracias!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que estás intentando leer de un archivo .txt y escribir en un archivo .csv. Puedes utilizar la librería CSV para hacer esto. Puedes utilizar el método CSV.open para abrir el archivo .csv y el método CSV.write para escribir en él. También puedes utilizar el método String#tr_s para eliminar las comillas y comas de los strings.

    Aquí tienes un ejemplo de cómo hacerlo:

    require 'csv'
    
    class Plantas < Struct.new(:identifier, :code, :lang, :fullname)
    end
    
    f = File.open("planta.txt", "r")
    
    CSV.open("plantas.csv", "w") do |csv|
      f.each_line do |line|
        fields = line.split(',')
        newPlant = Plantas.new
        newPlant.identifier = fields[0].tr_s('"', '').strip
        newPlant.code = fields[2].tr_s('"', '').strip
        newPlant.lang = fields[3].tr_s('"', '').strip
        newPlant.fullname = fields[10].tr_s('"', '').strip
        str = "#{newPlant.identifier} #{newPlant.code} #{newPlant.lang} #{newPlant.fullname}" #líneas para imprimir
        csv << [str]
      end
    end
    

Comments are closed.