[ncl-talk] Help: how to just read out one line from a big ascii file?

Guido Cioni guidocioni at gmail.com
Tue Feb 28 04:58:56 MST 2017


Just to be correct about this, but someone could step in if I'm saying stupid things, you HAVE to load the file into the memory (asciifile) and then subset with data(5:10), for example. 
If you don't want to load the entire file just cut it before reading it into NCL. 

Guido Cioni
http://guidocioni.altervista <http://guidocioni.altervista/>.org

> On 28 Feb 2017, at 12:56, Guido Cioni <guidocioni at gmail.com> wrote:
> 
> Hey Xiaofeng,
> First, I would suggest you to remove all the rows that are not supposed to be read by NCL (i.e. the header) beforehand, otherwise you'll get into the trouble. If you tell NCL to expect 2 columns of integers when there is 1 of string...you imagine what could result of this :) You can skip the header somehow, but to debug the code it's easier to have fewer complications. 
> 
> Second, I'm pretty sure that the asciiread procedure (which, I believe, you're using) does not work well with strings AND numeric values on the same row. If you read from the documentation (http://www.ncl.ucar.edu/Document/Functions/Built-in/asciiread.shtml <http://www.ncl.ucar.edu/Document/Functions/Built-in/asciiread.shtml>) "For string data, each line of the file is read as a string"
> So the line begins as a string it would read it as a string. In order to read strings and values you have to read everything as string and then perform a conversion, as explained here (http://www.ncl.ucar.edu/Applications/read_ascii.shtml#pw <http://www.ncl.ucar.edu/Applications/read_ascii.shtml#pw>, see Example for p <http://www.ncl.ucar.edu/Applications/Data/asc/istasyontablosu_son.txt>w.dat file, which is really similar to what you have).
> 
> So I would modify your ascii file as follows (you can compute totals afterwards, that's what NCL is meant for):
> 
> China		1,321		       19.84%
> India		1,132		       16.96%
> United States	304		       4.56%
> Indonesia	232		       3.47%
> Brazil		187		       2.80%
> Pakistan	163		       2.44%
> Bangladesh	159		       2.38%
> Nigeria		148		       2.22%
> Russia		142		       2.13%
> Japan		128		       1.92%
> Mexico		107		       1.60%
> Philippines	89		       1.33%
> Vietnam		84		       1.31%
> Germany		82		       1.23%
> Egypt		81		       1.13%
> 
> and read it as (NOT TESTED): 
> 
>   fname = "asc4.txt"
>   data  = asciiread <http://www.ncl.ucar.edu/Document/Functions/Built-in/asciiread.shtml>(fname,-1,"string")
>   population = stringtofloat <http://www.ncl.ucar.edu/Document/Functions/Built-in/stringtofloat.shtml>(str_get_field <http://www.ncl.ucar.edu/Document/Functions/Built-in/str_get_field.shtml>(data, 2," "))
>   precentage = stringtofloat <http://www.ncl.ucar.edu/Document/Functions/Built-in/stringtofloat.shtml>(str_get_field <http://www.ncl.ucar.edu/Document/Functions/Built-in/str_get_field.shtml>(data, 3," "))
>   country    = str_get_field <http://www.ncl.ucar.edu/Document/Functions/Built-in/str_get_field.shtml>(data, 1," ")
> 
> Carefully read the page http://www.ncl.ucar.edu/Applications/read_ascii.shtml <http://www.ncl.ucar.edu/Applications/read_ascii.shtml>, there are a lot of examples.
> 
> Cheers
> 
> 
> Guido Cioni
> http://guidocioni.altervista <http://guidocioni.altervista/>.org
> 
>> On 28 Feb 2017, at 12:29, Xiaofeng Li <Xiaofeng.Li at newcastle.ac.uk <mailto:Xiaofeng.Li at newcastle.ac.uk>> wrote:
>> 
>> <asc4.txt>
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20170228/26911336/attachment.html 


More information about the ncl-talk mailing list