Hi Nikos,
You could use numpy and genfromtxt() to parse the output string...
genfromtxt() requires an StringIO object (or file) and StringIO (from io)
requires unicode()...
So you could do:
from io import StringIO
import numpy as np
output = np.genfromtxt(StringIO(unicode(grass.read_command('r.category',
map=base))) , delimiter='\t', dtype=None, names=['cat', 'label'])
That causes however some overhead [1]. So if it makes sense depends on what you
want to do with the data in the further processing chain...
Cheers
Stefan
1: https://docs.scipy.org/doc/numpy/user/basics.io.genfromtxt.html
-----Original Message-----
From: grass-dev <[email protected]> On Behalf Of Nikos
Alexandris
Sent: søndag 19. august 2018 22:19
To: GRASS-GIS development mailing list <[email protected]>
Subject: [GRASS-dev] Parsing output of r.category which includes labels
If I am not wrong, all use cases of `read_command()` [0, 1], in (at least) the
grass-addons repository, do not consider an output from `r.category` which
includes labels.
[0]
https://grass.osgeo.org/grass74/manuals/libpython/script.html?highlight=read_command#script.core.read_command
[1]
https://grass.osgeo.org/grass75/manuals/libpython/script.html?highlight=read_command#script.core.read_command
I work on such a case where category numbers come along with label strings.
To read category numbers, I came up with:
```
import grass.script as grass
grass.read_command('r.category', map=base).split('\n')[:-1]
for category in categories:
category = category.split('\t')[0] ```
Is there any other command that will do this better? Would you consider adding
one?
Nikos
_______________________________________________
grass-dev mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/grass-dev