digitalmars.D.learn - CSV with empty values for integer fields
- Arun Chandrasekaran (68/68) Oct 28 2017 CSV with empty values for integer fields throws
- Jesse Phillips (4/4) Oct 29 2017 Not really you'll need to parse it out as a string and do the
- Arun Chandrasekaran (2/6) Oct 30 2017 Should I raise a ticket on Bugzilla to address this?
CSV with empty values for integer fields throws (Row: 1, Col: 3) Unexpected end of input when converting from type string to type int Code that parses the CSV: ``` import std.algorithm; import std.array; import std.csv; import std.stdio; import std.conv; import std.range; private struct IdentifyResult { string probe; string target; int rank; int score; bool vendorMatch; } void main(string[] args) { if (args.length < 2) { writeln("Usage: ", args[0], " <csv-file-1> ... <csv-file-n>"); return; } foreach (i; 1 .. args.length) { try { auto arr = File(args[i], "r").byLine.joiner("\n").csvReader!IdentifyResult.array; writeln(args[i], "\tValid"); } catch (std.csv.CSVException e) { writeln(e); writeln(args[i], "\tInvalid"); } } } ``` Input CSV file below CSV header (just for reference, but not part of the CSV) Probe,Target,rank,score,match/nomatch,datetime,position,score ``` LIP_0905_1230.nist,,,,FALSE,2017-09-05 23:24:37,, LIP_0905_1230.nist,,,,FALSE,2017-10-12 11:37:29,, LIP_0905_1230.nist,,,,FALSE,2017-10-12 11:51:03,, LIP_0905_1230.nist,,,,FALSE,2017-10-12 12:07:21,, LIP_0905_1230.nist,CRM_1012_1920.nist,1,9999,true,2017-10-12 19:56:00,25,9999 LIP_0905_1230.nist,CRM_1012_1920.nist,1,9999,true,2017-10-13 00:55:00,25,9999 LIP_0905_1230.nist,CRM_1013_0005.nist,2,9999,true,2017-10-13 00:55:00,25,9999 LIP_0905_1230.nist,CRM_1012_1920.nist,1,9999,true,2017-10-18 18:27:22,25,9999 LIP_0905_1230.nist,CRM_1013_0005.nist,2,9999,true,2017-10-18 18:27:22,25,9999 LIP_0905_1230.nist,CRM_1013_0005.nist,1,9999,true,2017-10-20 11:04:31,25,9999 ``` Is there anyway to overcome this without modifying the original CSV? Cheers, Arun
Oct 28 2017
Not really you'll need to parse it out as a string and do the conversion later. It probably would be good to support nullable!int pretty sure it doesn't currently.
Oct 29 2017
On Sunday, 29 October 2017 at 15:45:23 UTC, Jesse Phillips wrote:Not really you'll need to parse it out as a string and do the conversion later. It probably would be good to support nullable!int pretty sure it doesn't currently.Should I raise a ticket on Bugzilla to address this?
Oct 30 2017