2011-05-27 11 views
8

Rubí versión 1.9 del csvEn Ruby CSV, ¿cómo escribir un espacio en blanco ,, en lugar de "", en un archivo?

header %w[first second third] 

data = ["column one",,"column three"] 

CSV.open("myfile.csv","w") do |csv| 
    csv << header 
    csv << data 
end 

En este sencillo ejemplo, el medio vacía ,, en la matriz de datos provoca un error, pero si se utilizan cita vacía, "", entonces no se crea ningún error y el archivo CSV . Sin embargo, quiero hacer que el archivo CSV no tenga un elemento presupuestado vacío.

Específicamente, ¿cómo puedo generar secciones en blanco de un archivo CSV sin comillas? Los datos pueden ser variables vacías, pero aún así deben escribir las comas.

Respuesta

23

Uso

data = ["column one",nil,"column three"] 

que genera que CSV

first,second,third 
column one,,column three 
+0

excepcional, gracias. Con una marca de verificación una vez que está permitido – sf2k

+0

tuve una situación en la que usé el método de división en una cadena con delimitadores donde había 'campos' en blanco, por ejemplo, una cadena delimitada por tabulaciones sería '" nombre \ tage \ t \ t \ tbirthday \ n "' y la matriz resultante para esos campos en blanco se convirtieron en comillas dobles (""). Esto es lo que hice para generar nils en la matriz: 'csv << string.split (/ \ t /). Map {| f | f == ""? nil: f} ' –