Pyspark如何拆分字符串列并提取Dev\或dev\之后的文件路径内容
你当前使用的固定字符串拆分逻辑只能匹配大写的Dev\,无法匹配小写的dev\,所以会出现部分结果不符合预期的情况,以下是两种可行的实现方案:
方案1:使用regexp_extract(更推荐,定位更精准)
这个方法直接通过正则匹配目标字段,避免拆分后取元素可能出现的边界问题:
from pyspark.sql import functions as F df = df.withColumn( "sub_path", # (?i) 表示正则匹配忽略大小写,可同时匹配Dev或dev前缀 # 四层反斜杠是为了兼容Python字符串转义+正则转义,对应路径中实际的单个反斜杠 F.regexp_extract(F.col("path"), r"(?i)dev\\\\(.*)", 1) )
方案2:沿用split逻辑适配大小写
如果要保留你现有的拆分思路,把拆分规则改成不区分大小写的正则即可:
from pyspark.sql import functions as F df = df.withColumn( "sub_path", F.element_at(F.split(F.col("path"), r"(?i)dev\\\\"), -1) )
两种方案都可以覆盖大小写的Dev\、dev\匹配场景,输出你需要的子路径结果。
内容的提问来源于stack exchange,提问作者Leonard
相关产品推荐
相关产品推荐

