ReadList["test.dat", Table[Record, {3}], RecordSeparators -> {" ", "\n"}] /. "-1.#IND00" -> Indeterminate // ToExpression One can also use the `RecordLists -> True` option for irregular data. You can also use `-1.#IND00` as `RecordSeperators` and they'll be skipped during the reading of the data. e.g. ReadList["test.dat", Record, RecordSeparators -> {" ", "\n", "-1.#IND00"}] It seems the best way is to use `Word` and related options. The following takes care of irregular data. ReadList["test.dat", Word, WordSeparators -> {" ", "-1.#IND00"}, RecordLists -> True] // ToExpression > {{1., 0., 3.}, {4.}, {5., 6.}} I have omitted the `Indeterminate` data. to include it just do: ReadList["test.dat", Word, WordSeparators -> {" "}, RecordLists -> True] /. "-1.#IND00" -> Indeterminate // ToExpression > {{1., 0., 3.}, {4., Indeterminate, Indeterminate}, {5., 6., Indeterminate}}