2011-12-12 3 views
0

여러 차례 내가 루비 스크립트에서 '해시 배열'로 나 자신을 발견하고이를 CSV 파일에 쓰고 싶습니다. 나는 이것을 위해 FasterCSV를 사용할 수 있다는 것을 알고있다.FasterCSV를 사용하여 쓸 필드를 지정하는 방법

내 질문에 특정 필드를 지정하려면 어떻게해야합니까? 나 자신을 해시 필터링 할 필요없이 어떻게 할 수 있습니까? 이상적으로 FasterCSV 필드 목록을 지정하고 해시를 추가 할 수 있습니다. 그런 다음 FasterCSV는 지정된 필드와 일치하는 키로 값을 필터링하고 나머지는 수행합니다.

파이썬에는이를 수행 할 수있는 DictWriter라는 lib가 있습니다.

+0

FasterCSV를 사용하여 '배열 배열'을 CSV 파일에 어떻게 써야합니까? – Alexis

+0

나는 hash.values를 호출 할 것입니다. 이것은 내 csv에 모든 키/값 쌍이 필요하고 모든 해시가 동일한 키를 갖고있는 경우 작동합니다. 내가 직면하고있는 문제는 여러 값으로 여러 해시를 가지고 있지만 모든 해시에는 키의 특정 하위 집합이 포함되어 있다는 것입니다 (그리고이 값은 CSV에 쓰고 싶습니다). – Poul

답변

3

좋아, 난 제임스에 질문 (FasterCSV의 저자를) 요청하고, 여기에 그의 대답 :

하면, 해시의 배열을 가지고 있다고

[{a: 1, b: 2, x: 0}, {a: 2, b: 3}] 

을 그리고 당신은 원하는 경우 다음과 : b 키를 사용하면 다음을 수행 할 수 있습니다.

>> CSV.generate(headers: [:a, :b]) do |csv| 
    | [{a: 1, b: 2, x: 0}, {a: 3, b: 10}].each do |row| 
    |  csv << row 
    | end 
    | end 
=> "1,2\n3,10\n" 

희망이 있습니다.

관련 문제