# xarray.DataArray.str.index

#### DataArray.str.index(sub, start=0, end=None, side='left')[[source]](https://github.com/pydata/xarray/blob/main/xarray/core/accessor_str.py#L1793-L1842)

Return lowest or highest indexes in each strings where the substring is
fully contained between [start:end]. This is the same as
`str.find` except instead of returning -1, it raises a ValueError
when the substring is not found.

If start, end, or ‘sub\` is array-like, they are broadcast
against the array and applied elementwise.

* **Parameters:**
  * **sub** ([`str`](https://docs.python.org/3/builtins/stdtypes.html#str) or [array-like](https://numpy.org/doc/stable/glossary.html#term-array_like) of [`str`](https://docs.python.org/3/builtins/stdtypes.html#str)) – Substring being searched.
    If array-like, it is broadcast.
  * **start** ([`int`](https://docs.python.org/3/builtins/functions.html#int) or [array-like](https://numpy.org/doc/stable/glossary.html#term-array_like) of [`int`](https://docs.python.org/3/builtins/functions.html#int)) – Left edge index.
    If array-like, it is broadcast.
  * **end** ([`int`](https://docs.python.org/3/builtins/functions.html#int) or [array-like](https://numpy.org/doc/stable/glossary.html#term-array_like) of [`int`](https://docs.python.org/3/builtins/functions.html#int)) – Right edge index.
    If array-like, it is broadcast.
  * **side** (`{"left", "right"}`, *default*: `"left"`) – Starting side for search.
* **Returns:**
  **found** ([array](https://numpy.org/doc/stable/glossary.html#term-array) of [`int`](https://docs.python.org/3/builtins/functions.html#int))
* **Raises:**
  [**ValueError**](https://docs.python.org/3/builtins/exceptions.html#ValueError) – substring is not found
