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

如何在PySpark中用正则分隔.read.text()读取的多空格分隔文本

PySpark 读取多空格分隔文本文件实现方法

核心逻辑:利用PySpark内置split函数支持正则表达式的特性,匹配2个及以上连续空格作为分隔符,即可避免误切字段内部的单个空格(比如人名、地址里的单空格)。

实现步骤

  • 第一步:读取原始文本为单列DataFrame,每行对应文件里的一整行记录
from pyspark.sql import functions as F

# 替换为你的文件实际存储路径
raw_df = spark.read.text("/your/local/or/hdfs/file/path.txt")
  • 第二步:用正则规则切分每行内容
    正则规则\s{2,}的含义是匹配连续2个及以上的空白字符,代码中反斜杠需要转义,因此写为\\s{2,}:
split_df = raw_df.withColumn("col_array", F.split(F.col("value"), "\\s{2,}"))
  • 第三步:按字段顺序从切分后的数组中提取列,设置对应列名
    根据示例数据的字段顺序(姓名、职业、地址、邮编),提取生成最终结构化DataFrame:
result_df = split_df.select(
    F.col("col_array")[0].alias("name"),
    F.col("col_array")[1].alias("occupation"),
    F.col("col_array")[2].alias("address"),
    F.col("col_array")[3].alias("zip_code")
)

效果验证

针对给出的示例行(Ryan A. Smith>>>Welder>>>>>>>3200 Smith Street>>>>>>99999,>>>代表多空格),切分后结果完全符合预期:

nameoccupationaddresszip_code
Ryan A. SmithWelder3200 Smith Street99999

注意:如果文件首行是表头,在读取raw_df后增加一步过滤首行的逻辑即可;如果存在字段缺失的场景,可以根据业务需求补充空值处理逻辑。

内容的提问来源于stack exchange,提问作者Matthew Mendiola

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 16:09:09