2011-10-29 36 views
0

我的第5列有使用兩個字母標識符(CA,NY,WA ...等)的各種美國州名我怎樣才能換出每個值?說我想所有的CA爲1,紐約爲2,WA是3列中的CSV交換值

回答

0

試試這個片斷:

require 'csv' 
state_map = { CA: 1,NY: 2,WA: 3 } 

converted_states = CSV.generate do |csv| 
    CSV.foreach('states.csv') do |line| 
    key = line[4].to_sym 
    line[4] = state_map[key] if state_map.has_key? key 
    csv << line 
    end 
end 

puts converted_states #instead of displaying in this place you can save data etc. 

在這個片段中,我想你已經與映射嵌入散列像State: Id

+0

該文件是一個簡單的CSV文件。我不確定你的意思是通過嵌入一個散列。 – chief

+0

它的工作。謝謝你的幫助。 – chief

+0

如果我正確理解你,你有一個csv文件的值。但你必須定義狀態的兩個字母標識符和一些數字ID之間的映射。上面我的意思是說你把這個映射作爲代碼中的硬編碼散列來簡化。 – WarHog