2014-11-06 2 views
0

내가 가지고 위의 코드에서 탭루비 CSV 탭 인쇄 솔루션

prod = { "name": "Georeous,elements,are upcoming,this year","desc":"hi"} 

p = prod 
File.open("file.csv","wb") do |f| 
p.each do |s| 
f.print "#{s["name"]}\t" 
f.print "#{s["desc"]}\t" 
end 
end 

에 자극 해시를 CSV 파일로 결과를 priniting하는 쉼표

beacuse로 구분 값 이름 키가 동안 문제 그 쉼표의 내 코드는

name  desc 
Georeous elements are upcoming this year  hi 

로 priniting있다하지만 난이

로 인쇄 할 10
+0

탭으로 구분 된 파일을 손으로 작성하고 CSV 파일로 읽으며 쉼표가 구분 기호로 해석되는 이유가 궁금하십니까? 내가 놓친 게 있니? 어떻게'file.csv'를 읽었습니까? –

+0

당신은 맞습니다.하지만 파일을 읽지 않고 있습니다 ... 파일 만 쓰고 있습니다. – user2996524

+1

코드는 어떻게 생겼습니까? 그'prod'는 Ruby가 아니며'p.each'도 작동하지 않습니다. –

답변

1

이 질문에 여전히 관심이 있으시면 가능한 해결 방법은 생성 된 CSV의 셀을 인용하는 것입니다. 이렇게하면 스프레드 시트 응용 프로그램에 나중에 파일을 열어 셀 내의 쉼표를 무시해야합니다.

name desc 
"Georeous,elements,are upcoming,this year" "hi" 

또한 이전 코드에 몇 가지 문제가있었습니다. 한 가지 문제는 prod가 해시이고 배열이 아니므로 s은 "name"및 "desc"키가 포함 된 해시가 아닙니다.

products = [ 
    {"name" => "Georeous,elements,are upcoming,this year", 
    "desc" => "hi"}, 
    {"name" => "Rose", 
    "desc" => "a rose by any other name"} 
] 

File.open("file.csv", "w") do |f| 
    f.puts "name\tdesc" 
    products.each do |product| 
    f.print "\"#{product["name"]}\"\t" 
    f.print "\"#{product["desc"]}\"\n" 
    end 
end