digitalmars.D.learn - how to skip empty field in csvReader?
- mw (28/28) Jun 05 2023 Hi,
- Steven Schveighoffer (7/9) Jun 06 2023 What I have done is specify that it's a string, and then handle the
- mw (8/17) Jun 06 2023 The std library need to be enhanced to skip such empty field
Hi, https://run.dlang.io/is/9afmT1 ``` void main() { import std.csv; import std.stdio: write, writeln, writef, writefln; import std.algorithm.comparison : equal; string text = "Hello;65;;\nWorld;123;7.5"; struct Layout { string name; int value; double other; } auto records = text.csvReader!Layout(';'); assert(records.equal([ Layout("Hello", 65, 2.5), Layout("World", 123, 7.5), ])); } ``` There is an empty field in the 1st line: "Hello;65;;", then std.csv.CSVException /dlang/dmd/linux/bin64/../../src/phobos/std/csv.d(1232): Floating point conversion error for input "". Is there a way to tell csvReader to skip such empty fields? Or, is there another CSV reader library with this functionality I can use? Thanks.
Jun 05 2023
On 6/6/23 1:09 AM, mw wrote:Is there a way to tell csvReader to skip such empty fields?What I have done is specify that it's a string, and then handle the conversion myself. Possibly it can use Nullable, but I'm not sure.Or, is there another CSV reader library with this functionality I can use?I don't know how much of this is supported in tsv-utils but you might give it a look. -Steve
Jun 06 2023
On Tuesday, 6 June 2023 at 14:18:25 UTC, Steven Schveighoffer wrote:On 6/6/23 1:09 AM, mw wrote:The std library need to be enhanced to skip such empty field (very simple change I think), it's a common scenario in real world data, which Python can handle easily.Is there a way to tell csvReader to skip such empty fields?What I have done is specify that it's a string, and then handle the conversion myself.Possibly it can use Nullable, but I'm not sure.https://github.com/eBay/tsv-utils Do you know if there is any API doc? Readme only has command line doc.Or, is there another CSV reader library with this functionality I can use?I don't know how much of this is supported in tsv-utils but you might give it a look.
Jun 06 2023