Python/PySpark实现字符串按空格拆分、后接数字时跳过拆分生成新列
PySpark 按指定规则拆分字符串新增列实现方法
你的拆分需求可以通过负向先行断言的正则表达式实现,只匹配「后面不紧跟数字的空格」作为分隔符即可。
核心正则说明
使用正则 \s(?![0-9]) 作为split函数的分隔符参数:
\s匹配单个空格(?![0-9])是负向先行断言,限制前面匹配的空格后面不能紧跟数字,完全满足「空格后跟数字就跳过本次拆分」的规则
最终代码
# 导入依赖函数 from pyspark.sql.functions import split, col # 修改split的分隔符参数即可 data = data.withColumn("newcolumn", split(col("column"), r"\s(?![0-9])"))
效果验证
按照你的输入示例运行后,newcolumn列的输出和预期完全一致:
- 输入
"511 520 NA 611"→ 输出["511","520","NA 611"] - 输入
"322 GA 620"→ 输出["322","GA 620"] - 输入
"3 321"→ 输出["3","321"] - 输入
"334 344"→ 输出["334","344"]
可选兼容优化
如果数据源存在多个连续空格的场景,可以把正则修改为 \s+(?![0-9]),即可匹配多个连续的非数字后置空格作为拆分点。
内容的提问来源于stack exchange,提问作者BADS
相关产品推荐
相关产品推荐

