polars.internals.expr.string.ExprStringNameSpace.split_exact#

ExprStringNameSpace.split_exact(by: str, n: int, inclusive: bool = False) Expr[source]#

Split the string by a substring using n splits.

Results in a struct of n+1 fields.

If it cannot make n splits, the remaining field elements will be null.

Parameters:
by

Substring to split by.

n

Number of splits to make.

inclusive

If True, include the split character/string in the results.

Returns:
Struct of Utf8 type

Examples

>>> df = pl.DataFrame({"x": ["a_1", None, "c", "d_4"]})
>>> df.select(
...     [
...         pl.col("x").str.split_exact("_", 1).alias("fields"),
...     ]
... )
shape: (4, 1)
┌─────────────┐
│ fields      │
│ ---         │
│ struct[2]   │
╞═════════════╡
│ {"a","1"}   │
├╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ {null,null} │
├╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ {"c",null}  │
├╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ {"d","4"}   │
└─────────────┘

Split string values in column x in exactly 2 parts and assign each part to a new column.

>>> df.with_columns(
...     [
...         pl.col("x")
...         .str.split_exact("_", 1)
...         .struct.rename_fields(["first_part", "second_part"])
...         .alias("fields"),
...     ]
... ).unnest("fields")
shape: (4, 3)
┌──────┬────────────┬─────────────┐
│ x    ┆ first_part ┆ second_part │
│ ---  ┆ ---        ┆ ---         │
│ str  ┆ str        ┆ str         │
╞══════╪════════════╪═════════════╡
│ a_1  ┆ a          ┆ 1           │
├╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ null ┆ null       ┆ null        │
├╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ c    ┆ c          ┆ null        │
├╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ d_4  ┆ d          ┆ 4           │
└──────┴────────────┴─────────────┘