求助:如何在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
相关产品推荐
相关产品推荐

