def rownrs(self, key, upperkey={}, lowerincl=True, upperincl=True):
        """Get a sequence of row numbers containing the key(s).

        A single key can be given, but by giving argument `upperkey` as well
        a key range can be given (where upper key must be > lower).
        One can specify if the lower and upper key should be part of the range
        (`incl=True`) or not. By default both keys are part of the range.

        The key and optional upper key have to be given in the same way as
        for method :func:`rownr`.

        Similar to method :func:`rownr`. python's index operator [] can be used
        if the index consists of a single column. However, in this case only
        key ranges can be used (because the index operator with a single key
        returns a single row number, thus can only be used for unique indices).
        The lower key is inclusive, but the upper key is exclusive conform
        the standard python index semantics.

        For example::

          t = table('3c343.MS')
          tinx = t.index ('ANTENNA1')    # build index for antenna name
          rownr = tinx.rownr(0)          # find antenna1 = 0
          rownr = tinx[0:1]              # same as above

        """
        lkey = self._makekey(key)
        ukey = self._makekey(upperkey)
        if len(ukey) == 0:
            return self._rownrs(lkey)
        return self._rownrsrange(lkey, ukey, lowerincl, upperincl)