<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style id="owaParaStyle">P {
        MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px
}
</style>
</head>
<body ocsi="0" fpstyle="1">
<div style="color: rgb(0, 0, 0); font-family: Tahoma; font-size: 10pt; direction: ltr;">
<p>Hi Antoine,</p>
<p> </p>
<p>did you also look at fscanfMat ? It's handy when  space or tab separators.</p>
<p> </p>
<p>regards,</p>
<p> </p>
<p>David</p>
<hr tabindex="-1">
<div id="divRpF743245" style="direction: ltr;"><font color="#000000" face="Tahoma" size="2"><b>De :</b> users [users-bounces@lists.scilab.org] de la part de Antoine Monmayrant [antoine.monmayrant@laas.fr]<br>
<b>Envoyé :</b> lundi 27 avril 2020 17:40<br>
<b>À :</b> Users mailing list for Scilab<br>
<b>Objet :</b> [Scilab-users] parsing TSV (or CSV) file with scilab is a nightmare<br>
</font><br>
</div>
<div></div>
<div>
<p>Hi all,</p>
<p><br>
</p>
<p>This is both a rant and desperate cry for help.<br>
I'm trying to parse some TSV data (tab separated data file) with scilab and I cannot find a way to navigate around the minefield of bugs present in meof/mgetl/mgetstr/csvRead.</p>
<p>A bit of context: I need to load into scilab data generated by a closed source software.<br>
The data is in the form of many TSV files (that I cannot share in full, just some redacted bits) with a header and a footer.<br>
I don't want to hand modify these files or edit them in any way (I need to keep this as portable as possible, so no sed/awk/grep...)<br>
</p>
<h2>OPTION 1: csvRead</h2>
<p>That's the most intuitive solution, however, because of <a class="moz-txt-link-freetext" href="http://bugzilla.scilab.org/show_bug.cgi?id=16391" target="_blank">
http://bugzilla.scilab.org/show_bug.cgi?id=16391</a> and the presence of more than 1 empty line in my header/footer, this crashes Scilab.</p>
<h2>OPTION 2: hand parsing line by line using mgetl/meof<br>
</h2>
<p>I tried:</p>
<p>filename="tsv.txt";<br>
[fd, err] = mopen(filename, 'rt');<br>
while ~meof(fd) do<br>
    txtline=mgetl(fd,1);<br>
end<br>
mclose(fd)<br>
</p>
<p>Saddly, and contrary to what's written in "help mgetl", meof keeps on returning 0, well passed the end of the file and the while never ends!</p>
<h2>OPTION 3: hand parsing chunk by chunk using mgetstr/meof</h2>
<p>"help meof" does not confirm that meof should work with mgetl, but mgetstr is specifically listed.<br>
I thus tried:</p>
<p>filename="tsv.txt";<br>
[fd, err] = mopen(filename, 'rt');<br>
while ~meof(fd) do<br>
    txtchunk=mgetstr(80,fd);<br>
end<br>
mclose(fd)</p>
<p>But thanks to <a class="moz-txt-link-freetext" href="http://bugzilla.scilab.org/show_bug.cgi?id=16419" target="_blank">
http://bugzilla.scilab.org/show_bug.cgi?id=16419</a> this is also crashing Scilab.</p>
<p><br>
</p>
<h2>OPTION 4: Can anyone here help me with this?</h2>
<p>I am really running out of ideas.<br>
Did I miss some -hmm- obvious combination of available file parsing scilab functions to achieve my goal?<br>
I have the feeling that it would have been faster for me to just learn a totally new language that does not suck at parsing files than trying to get it to work with scilab....</p>
<p><br>
</p>
<p>Antoine</p>
<p>(depressed)<br>
</p>
<p><br>
</p>
<p><br>
</p>
<p><a class="moz-txt-link-freetext" href="http://bugzilla.scilab.org/show_bug.cgi?id=16419" target="_blank">http://bugzilla.scilab.org/show_bug.cgi?id=16419</a><br>
</p>
</div>
</div>
</body>
</html>