如何去除姓名首字母中的点和空格
Posted
技术标签:
【中文标题】如何去除姓名首字母中的点和空格【英文标题】:How to remove dots and spaces in initials of a name 【发布时间】:2021-04-11 20:45:48 【问题描述】:我有一个 pyspark 数据框,其名称如下:
J.J.斯科特 J. S.乔伊斯 房车。布拉德利·卡特其中一些在首字母之间包含点和空格,而有些则没有。它们如何转换为:
JJ 斯科特 JS 乔伊斯 RV 布拉德利卡特(首字母和姓名之间没有点和空格,首字母和姓名之间有 1 个空格)
我尝试使用以下内容,但它只替换点并且不会删除首字母之间的空格:
names_modified = names.withColumn("name_clean", regexp_replace("name", r"\.",""))
谢谢!
【问题讨论】:
【参考方案1】:可以使用transform
进行一些进一步的操作。想法是使用空格分割名称,并通过仅在长度超过 1 个字符的字符串之间添加空格来重新组合它们,这样首字母将在没有空格的情况下组合。
import pyspark.sql.functions as F
names_modified = names.withColumn(
'name_clean',
F.expr("""
concat_ws('',
transform(
split(replace(name, '.', ''), ' '),
(x, i) -> case when i = 0 then x
when length(x) > 1 then concat(' ', x)
else x
end
)
)
""")
)
names_modified.show()
+------------------+-----------------+
| name| name_clean|
+------------------+-----------------+
| J.J. Scott| JJ Scott|
| J. S. Joyce| JS Joyce|
|RV. Bradley Carter|RV Bradley Carter|
+------------------+-----------------+
【讨论】:
以上是关于如何去除姓名首字母中的点和空格的主要内容,如果未能解决你的问题,请参考以下文章