首页 > 解决方案 > PySpark:使用正则表达式删除空格后的字符数字组合

问题描述

我有一列充满字符串,其中一些是这样的:“ Telefon T1”,“ Post P2,......现在我想删除单词后面的所有内容。例如,Telefon T1 变成了简单的 Telefon。我尝试了以下代码以各种方式,但它不断给我elephon。

df = df.withColumn('mycolumn', regexp_replace('mycolumn', '[*[ ]?[A-Z]?\d$]'', "")) 

这不是一个 pyspark 问题,而是一个正则表达式问题。因此,如果您将此与列表一起使用,请替换“我会得到它”。谢谢

标签: regexstringpysparkcharacterdata-cleaning

解决方案


您可以使用

df = df.withColumn('mycolumn', regexp_replace('mycolumn', '^\\s*(\\S+).*', '$1'))

查看正则表达式演示

细节

  • ^- 字符串的开始
  • \s*- 0+ 个空格
  • (\S+)- 第 1 组(从替换模式中引用$1):任何 1 个或多个非空白字符
  • .*- 字符串的其余部分,除换行符之外的 0 个或多个字符,尽可能多。

替换模式中的$1替换反向引用仅将 Group 1 值保留在结果中。


推荐阅读