I have some whitespace-separated matrix data that I read with Import[..., "Table"]. The data contained mixed strings and numbers (the strings are for row and column names).
I noticed this weird behaviour:
ImportString["123c", "Table"]
(* ==> {{123}} *)
Mathematica ate the letter c!! Why?
It doesn't eat any other letters:
ImportString["123a", "Table"]
(* {{"123a"}} *)
ImportString["123e", "Table"]
(* {{"123e"}} *)
What is the explanation and what is a good workaround?
Update:
It seems that this happens even if the labels is quoted in the file:
ImportString["\"24c\"", "CSV"]
(* ==> {{24}} *)
Answer
Mathematica is interpreting c as a currency marker. This is controlled by the "CurrencyTokens" import option for "Table".
The default setting for "CurrencyTokens" is
{{"$ ", "£", "¥", "€"}, {"c ", "¢", "p ", "F "}}
so this also happens with the letters p or F.
The workaround is
ImportString["123c", "Table", "CurrencyTokens" -> None]
(* {{"123c"}} *)
Notice: The same applies to the "CSV", "TSV" and "List" import formats.
Comments
Post a Comment