* is there Ada package similar to Matlab textscan? @ 2015-07-17 3:52 Nasser M. Abbasi 2015-07-17 4:25 ` tmoran ` (2 more replies) 0 siblings, 3 replies; 4+ messages in thread From: Nasser M. Abbasi @ 2015-07-17 3:52 UTC (permalink / raw) Matlab textscan() build-in function is very useful, I use it all the time to read textual data from text files. One bascially tells it the format of each field, and will load all the data to Matlab data structure (called cells). Then one can simply loop over the data and process it. The format used is that of printf() standard format. It is described here http://www.mathworks.com/help/matlab/ref/textscan.html One can also tell it how many lines to skip before starting to read (this is in order to bypass any file headers) and tell it what is the field delimiter between the columns of the data. For example, given this text file ----- foo.txt--------------------- Student_ID | Test1 | Test2 | Test3 1, 91.5, 89.2, 77.3 2, 88.0, 67.8, 91.0 3, 76.3, 78.1, 92.5 -------------------------------- It is read as C = textscan(fileID,'%d %f %f %f','HeaderLines',1,'Delimiter',',') That is all. Now C will contain all the data in, in what is called cell columns. C{1}, C{2}, C{3}, C{4}. Is there a similar way to read data using Ada or must one parse each field one by one themselves after reading the file line by line? I searched for an Ada package that does something similar to textscan, but so far did not find one. thanks, --Nasser ^ permalink raw reply [flat|nested] 4+ messages in thread
* re: is there Ada package similar to Matlab textscan? 2015-07-17 3:52 is there Ada package similar to Matlab textscan? Nasser M. Abbasi @ 2015-07-17 4:25 ` tmoran 2015-07-17 6:31 ` Dmitry A. Kazakov 2015-07-17 11:05 ` Björn Lundin 2 siblings, 0 replies; 4+ messages in thread From: tmoran @ 2015-07-17 4:25 UTC (permalink / raw) That's a CSV file. I'm sure there are lots of folks' implementations. The important part of mine is: function Field_Name(Csv_File: Csv_Files; Index : Field_Counts) return String; -- raises Constraint_Error if Index not in 1 .. Header's Field_Count function Field_Index(Csv_File: Csv_Files; Name: String) return Field_Counts; -- Ignoring case, find first field whose prefix = Name -- returns zero if not found procedure Read_A_Record(Csv_File: in out Csv_Files); -- May End_Error. -- If a record has fewer fields than the header indicated, it's -- padded out with null strings. function Field_Content(Csv_File: Csv_Files; Index : Field_Counts) return String; -- Raises Use_Error if called before any Read_A_Record. ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: is there Ada package similar to Matlab textscan? 2015-07-17 3:52 is there Ada package similar to Matlab textscan? Nasser M. Abbasi 2015-07-17 4:25 ` tmoran @ 2015-07-17 6:31 ` Dmitry A. Kazakov 2015-07-17 11:05 ` Björn Lundin 2 siblings, 0 replies; 4+ messages in thread From: Dmitry A. Kazakov @ 2015-07-17 6:31 UTC (permalink / raw) John Woodruff's Numeric_IO packages: http://www.dmitry-kazakov.de/ada/Numeric-Name-IO.htm Download link: http://www.dmitry-kazakov.de/ada/Name_IO_Distribution-Nov10.zip -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: is there Ada package similar to Matlab textscan? 2015-07-17 3:52 is there Ada package similar to Matlab textscan? Nasser M. Abbasi 2015-07-17 4:25 ` tmoran 2015-07-17 6:31 ` Dmitry A. Kazakov @ 2015-07-17 11:05 ` Björn Lundin 2 siblings, 0 replies; 4+ messages in thread From: Björn Lundin @ 2015-07-17 11:05 UTC (permalink / raw) On 2015-07-17 05:52, Nasser M. Abbasi wrote: > one parse each field one by one themselves after > reading the file line by line? Gnat.Awk is line based but parsing is simple: with GNAT; use GNAT; with GNAT.AWK; with Text_io; procedure Test is Computer_File : AWK.Session_Type; begin AWK.Set_Current (Computer_File); AWK.Open (Separators => ",", Filename => "path/to/file.dat"); while not AWK.End_Of_File loop AWK.Get_Line; if AWK.Field(4) = "GB" and then AWK.Field (18) = "PE" then Text_io.Put_Line(AWK.Field (5) & " | " & AWK.Field (8) & " | " & AWK.Field (2) & " | " & AWK.Field (11)); end if; end loop; AWK.Close (Computer_File); see <https://www2.adacore.com/gap-static/GNAT_Book/html/rts/g-awk__ads.htm> for more examples -- -- Björn ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-07-17 11:05 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2015-07-17 3:52 is there Ada package similar to Matlab textscan? Nasser M. Abbasi 2015-07-17 4:25 ` tmoran 2015-07-17 6:31 ` Dmitry A. Kazakov 2015-07-17 11:05 ` Björn Lundin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox