以下密钥:GIC-ID
不会返回其值"999-99-9999"
。我想弄明白为什么。
以下是键 - 第一行包含.csv报告的列名。格式化输出以防止滚动:
["AGY/DIV " "STS" "GIC-ID " "LAST-NAME " "FIRST-NAME "
"COVERAGE DESCRIPTION "
"PREMIUM " "RUN-DATE" "BIL MO "]
以下是为隐私而修改的数据(格式化以防止滚动的输出):
["666/0010" "ACT" "999-99-9999" "MARGE " "SIMPSON "
"YE OLD PILGRIM FAMILY - INSURED "
"0000.00" "123456789" "99999enter code here"]
我得到第一列包含键/列标题和使用以下内容创建的数据,包括将列名称与每行数据压缩在一起。
(def gic-csv-inp (fetch-csv-data "billing_roster.csv"))
(def gic-csv-cols (first gic-csv-inp))
(def gic-csv-data (rest gic-csv-inp))
(def zm2 (zipmap (map #(keyword %1) gic-csv-cols) (first gic-csv-data)))
现在,从类似但不同的报告中提取的以下密钥和数据工作得很好:
:Employee_SSN "999-99-9999"
那就是我可以提取密钥的值。
键一定有问题,我当然可以纠正这些,比如删除空格等,但我不确定是什么问题。
感谢。
我的问题的答案是修剪这样的空格:
(:require [clojure.string :as cstr])
.
.
.
(def zm2 (zipmap (map #(keyword (cstr/trim %1)) gic-csv-cols)
(first gic-csv-data)))
答案 0 :(得分:1)
修剪空间确实有效
(def zm2 (zipmap (map #(keyword (re-find #"[^\s]*" %1)) gic-csv-cols) (first gic-csv-data)))
=> (zm2 :GIC-ID)
"999-99-9999"
[^ \ s] *是匹配所有非空白字符的正则表达式