スペースで区切られたキーがある場合、それを使用してキーを再作成せずに値を抽出するにはどうすればよいですか?
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))
テスト データの場合、キーを csv-data の 2 行目に zipmap します。
(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 "
スペースで区切られたキーを変更して、スペースをダッシュなどに置き換える必要がありますか、またはキーを再作成せずにキーを参照する別の方法はありますか?
ありがとう。