You need to enable JavaScript to run this app.
Lake AI Service

Lake AI Service

Copy page
Download PDF
Text cleaning
Specific character replacement
Copy page
Download PDF
Specific character replacement

Operator introduction

Description

Regular expression batch replacement processor

Key features

  • Dual-mode replacement mechanism:
    • Exact string match replacement
    • Regular expression pattern match replacement
  • Batch processing capability:
    • Supports parallel processing of multiple pattern-replacement pairs
  • Fault tolerance mechanism:
    • Skips abnormal patterns and records detailed logs

Daft invocation

Operator parameters

Input

Input column name

Note

texts

Array containing the original text content, with element type string

Output

Array of replaced text content, with element type string

Parameters

If a parameter does not have a default value, it is required

Parameter name

Type

Default value

Description

patterns

list

List of specific content to be replaced

  • Supports regular expressions and specific strings
  • Multi-element lists will replace text content one by one
  • Example: [r"\d+", "http://"]

replacements

list

List of replacement content

  • If there is only one element, all patterns will be replaced with this element
  • When there are multiple elements, they are replaced one-to-one with patterns
  • Example: ["NUM", "URL"]

Examples

The following code demonstrates how to use daft to run the operator to replace specific expressions.

from __future__ import annotations

import os

import daft
from daft import col
from daft.las.functions.text.regex_replacement import RegexReplacer
from daft.las.functions.udf import las_udf

if __name__ == "__main__":

    if os.getenv("DAFT_RUNNER", "native") == "ray":
        import logging

        import ray

        def configure_logging():
            logging.basicConfig(
                level=logging.INFO,
                format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
                datefmt="%Y-%m-%d %H:%M:%S.%s".format(),
            )
            logging.getLogger("tracing.span").setLevel(logging.WARNING)
            logging.getLogger("daft_io.stats").setLevel(logging.WARNING)
            logging.getLogger("DaftStatisticsManager").setLevel(logging.WARNING)
            logging.getLogger("DaftFlotillaScheduler").setLevel(logging.WARNING)
            logging.getLogger("DaftFlotillaDispatcher").setLevel(logging.WARNING)

        ray.init(dashboard_host="0.0.0.0", runtime_env={"worker_process_setup_hook": configure_logging})
        daft.set_runner_ray()
    daft.set_execution_config(actor_udf_ready_timeout=600)
    daft.set_execution_config(min_cpu_per_task=0)

    samples = {
        "text": [
            "<Query></Query><Title></Title><Url>http://news.cnr.cn/native/gd/20191212/t20191212_524895559.shtml</Url>",
            None,
        ]
    }

    patterns = [r"<.*?>", ""]
    replacements = ["/replace_tag", ""]
    ds = daft.from_pydict(samples)
    ds = ds.with_column(
        "replaced_text",
        las_udf(
            RegexReplacer,
            construct_args={"patterns": patterns, "replacements": replacements},
        )(col("text")),
    )
    ds.show()

    # ╭───────────────────────────────────────┬────────────────────────────────╮
    # │ text                                  ┆ replaced_text                  │
    # │ ---                                   ┆ ---                            │
    # │ Utf8                                  ┆ Utf8                           │
    # ╞═══════════════════════════════════════╪════════════════════════════════╡
    # │ <Query></Query><Title>提升党的领导力…    ┆ /replace_tag/replace_tag/repl… │
    # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
    # │ None                                  ┆ None                           │
    # ╰───────────────────────────────────────┴────────────────────────────────╯
Last updated: 2026.05.12 19:06:32