【问题标题】:Why does the map key not retrieve the value that can be plainly seen in the map?为什么地图键不检索在地图中可以清楚地看到的值?
【发布时间】:2012-08-08 17:18:29
【问题描述】:

以下键 :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"

也就是说我可以提取key的值。

这些键肯定有问题,我当然可以纠正这些问题,比如删除空格等,但我不确定是什么问题。

谢谢。

编辑:

我的问题的答案是像这样修剪空格:

(:require [clojure.string :as cstr])
.
.
.
(def zm2 (zipmap (map #(keyword (cstr/trim %1)) gic-csv-cols) 
(first gic-csv-data)))

【问题讨论】:

    标签: dictionary clojure


    【解决方案1】:

    修剪空格确实有效

    (def zm2 (zipmap (map #(keyword (re-find #"[^\s]*" %1)) gic-csv-cols) (first gic-csv-data)))
    
    => (zm2 :GIC-ID)
    "999-99-9999"
    

    [^\s]* 是一个匹配所有非空白字符的正则表达式

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-22
      • 1970-01-01
      • 2016-11-05
      • 1970-01-01
      • 1970-01-01
      • 2020-05-08
      • 1970-01-01
      • 2011-02-03
      相关资源
      最近更新 更多