[英]Why does the map key not retrieve the value that can be plainly seen in the map?
以下密鑰: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)))
修剪空間確實有效
(def zm2 (zipmap (map #(keyword (re-find #"[^\s]*" %1)) gic-csv-cols) (first gic-csv-data)))
=> (zm2 :GIC-ID)
"999-99-9999"
[^ \\ s] *是一個正則表達式,可匹配所有非空白字符
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.