2

編集:

私の質問は、zipmapで空白キーのように見えるものをどのように除外するかです。

問題の回避策はありますが、キーをフィルタリングする方法を知っていると非常に役立ちます。

編集終了:

この出力

:   [: [ ]]   ([ ])   3   ,,

によって生成されました

(println first-ent, " ", map-ent, " ", val-ent, " ", (count out-csv), " ", out-csv)

この関数で

(defn missing-accts 
    "Prints accounts found in one report but not the other."

    [report-header mapped-data out-file]
    (spit out-file (str "\n\n" report-header "\n\n") :append true)

    (doseq [map-ent mapped-data]
            (let [first-ent (first map-ent)
                  val-ent   (rest  map-ent)
                  out-csv   (if first-ent
                                (str (name (key map-ent)) "," (first (val map-ent)) "," (last (val map-ent)) "\n")
                                nil)]

                (println first-ent, " ", map-ent, " ", val-ent, " ", (count out-csv), " ", out-csv)
                (if (> (count out-csv) 3)                    
                    (spit out-file out-csv :append true)
                    (println "Skipping: ", out-csv)))))

空白キーを使用した出力のカウントが3であるという事実により、フィルター処理が可能になるという事実は、空白キーを検出できるほどクリーンなソリューションではないようです。空白のキーを見つけて除外することは、私が困惑したことです。

ありがとうございました。

4

1 に答える 1

5

次を使用して空白のキーワードを作成できます。

(keyword "")

これを使用して、リストをフィルタリングし、すべての空白のキーワードを削除できます。

(filter (fn [[key _]] (not= (keyword "") key)) map-ent)
于 2012-04-19T10:19:53.953 に答える