假设数据是 -
"King Khaled Hospital """"NG"""""
长度(包括引号和空格)= 33
在上面的例子中:
最终输出:
"King Khaled Hospital "NG""
长度=27
这只是一个例子。数据可以是任何东西。
设置
df.show()
+---------------------------------+
|col |
+---------------------------------+
|"King Khaled Hospital """"NG"""""|
|foo ""baz"" |
|"foo bar" |
|"foo """bar""" ""baz""" |
|"""foo""" |
+---------------------------------+
让我们使用 regexp_replace 将两个或多个连续出现的引号替换为单引号。请记住,这里我假设数据集中的字符串始终由相同数量的引号包围,例如,如果前面有一个单词有 4 个引号,那么后面必须有 4 个引号
result = df.withColumn('clean_col', F.regexp_replace('col', r'("{2,})([^"]+)\1', r'"$2"'))
结果
+---------------------------------+---------------------------+
|col |clean_col |
+---------------------------------+---------------------------+
|"King Khaled Hospital """"NG"""""|"King Khaled Hospital "NG""|
|foo ""baz"" |foo "baz" |
|"foo bar" |"foo bar" |
|"foo """bar""" ""baz""" |"foo "bar" "baz"" |
|"""foo""" |"foo" |
+---------------------------------+---------------------------+