title: Clojure: easily convert from invalid string to valid keyword
body: <p>I've been trying to find an idiomatic way to convert user data to valid keywords in clojure.</p>
  
  <p>A possible use case for this is when reading in an excel spreadsheet, I would like to dynamically build a map for each row besides the first where the first row contains headers that will be keywords . I need to account for the headers possibly containing spaces or other invalid characters. I have read that the keyword function will not complaim and will give you an invalid key that may be hard to work with or even harmful. </p>
  
  <p>I could manually make the conversions or possibly use a framework like slugger to do this, but i wanted to know if there was anything already built-in that could handle this. </p>
  
  <p>Also, I have read that at one point creating too many keys could overload the heap, but that was from 2010 and it may have been resolved in 1.3.  Would it just be best for me to create my hash-map with string key instead of keywords?  I have read that doing so is not idiomatic. </p>