[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