You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何在PySpark DataFrame中使用regexp_extract提取指定内容

在PySpark DataFrame中使用regexp_extract提取指定字符串

要从目标字符串里提取SUK-8935,可以通过regexp_extract函数结合精准正则表达式实现,以下是具体操作步骤和代码示例:

核心逻辑

目标字符串SUK-8935位于文本开头,格式为字母-数字组合且紧跟空格,我们可以用正则匹配该开头模式,通过捕获组提取结果。

代码实现

from pyspark.sql import SparkSession
from pyspark.sql.functions import regexp_extract

# 初始化Spark会话
spark = SparkSession.builder.appName("ExtractTargetCode").getOrCreate()

# 构造示例DataFrame
sample_data = [("SUK-8935 Phase 58: Accessories Launch - Optase Cleaning Gel - UK",)]
df = spark.createDataFrame(sample_data, ["content_col"])

# 提取目标字符串
# regexp_extract参数:列名、正则表达式、捕获组索引(这里取第一个捕获组)
df = df.withColumn("extracted_code", regexp_extract("content_col", "^(SUK-\\d+)", 1))

# 查看结果
df.show(truncate=False)

正则表达式说明

  • ^:锚定字符串起始位置,确保只匹配开头内容
  • SUK-:精确匹配字面量"SUK-"
  • \d+:匹配1个或多个数字(\d代表数字,+表示至少出现一次)
  • ():将匹配到的SUK-xxxx标记为捕获组,第三个参数1指定提取第一个捕获组的内容

通用替代方案

如果你的场景中开头代码是任意非空白字符(直到第一个空格),可以用更通用的正则^(\S+),同样能提取目标内容:

df = df.withColumn("extracted_code", regexp_extract("content_col", "^(\S+)", 1))

内容的提问来源于stack exchange,提问作者Thenappan PL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 23:15:51