davidsantiago / clojure-csv

A library for reading and writing CSV files from Clojure
187 stars 35 forks source link

Numbers aren't recognised as numbers #44

Open simon-brooke opened 5 years ago

simon-brooke commented 5 years ago

Given this input data row:

Aldershot;Leo Docherty;12;Hampshire;76205;26955;15477;3637;1796;1090;0;0;0

(from here)

I get this output:

["Aldershot" "Leo Docherty" "12" "Hampshire" "76205" "26955" "15477" "3637" "1796" "1090" "0" "0" "0"]

In other words, numbers are being recognised only as strings.

I wrote a wee function which sorts this:

(defn numbers-as-numbers
  "Return a list like the sequence `l`, but with all those elements
  which are string representations of numbers replaced with numbers."
  [l]
  (map #(if 
          (string? %) 
          (try 
            (let [n (read-string %)]
              (if (number? n) n %))
            (catch Exception e %))
          %) 
       l))

I'll try to do a pull request later today with this added in.

randomizedthinking commented 3 years ago

The parse-csv function is meant to return a vector of strings. It is a different game to convert some values to numbers.