當我有一個空格分隔的鍵時,如何在不重新創建鍵的情況下使用它來提取值?如何使用空格分隔鍵訪問值?
我有一組潛在的鍵,列名實際上,在數據中的第一順序從Clojure的-CSV返回:(這被格式化,以避免滾動)
["AGY/DIV " "STS" "GIC-ID "
"LAST-NAME "
"FIRST-NAME "
"COVERAGE DESCRIPTION "
"PREMIUM "
"RUN-DATE"
"BIL MO "]
然後,我創建這個鍵行和zipmap密鑰與數據的每一後續行(序列):
(defn create-map-keys
"Takes a sequence, and turns it into viable keys for a map."
[in-seq]
(map (fn [element] (keyword element)) (map #(cstr/trim %1) in-seq)))
; gic-csv-keys
(:AGY/DIV :STS :GIC-ID :LAST-NAME :FIRST-NAME
:COVERAGE DESCRIPTION :PREMIUM :RUN-DATE :BIL MO)
(defn zip-apply-col-nams
[col-keys row]
(zipmap col-keys row))
對於測試數據,我zipmap的鑰匙CSV-數據的第二行。
(def zm2 (zip-apply-col-nams gic-csv-keys (first gic-csv-data)))
當我嘗試從:COVERAGE DESCRIPTION
鍵提取值,我得到這個錯誤
(:COVERAGE DESCRIPTION zm2)
CompilerException java.lang.RuntimeException: Unable to resolve symbol: DESCRIPTION in this context, compiling:(NO_SOURCE_PATH:23)
然而,這個工程:
(zm2 (keyword "COVERAGE DESCRIPTION"))
"HARVARD PILGRIM FAMILY - INSURED "
我應該修改的空間分隔鍵例如用短劃線替換空間,還是有另一種方法來引用密鑰而不重新創建它?
謝謝。