如何在PySpark中取消特殊字符的注释



我有一个带有特殊字符(如áãâàéêèíîìóõôòúûùç(的字符串列的spark df,我想用aaaaeeeiiioooouuuc分别替换它们

作为我想要的一个例子:

name        | unaccent          
Vitória     | Vitoria
João        | Joao
Maurício    | Mauricio

我找到了这个例子,但它不适用于这些特殊字符Pyspark删除数据帧列中的多个字符

我试图手动创建这个df,但由于某种原因,我无法复制特殊字符,出现了一个问号?

from pyspark.sql import functions as F
from pyspark.sql.types import StructType, StructField, StringType, IntegerType, TimestampType
df = spark.createDataFrame(data=[("Vitória",),("João",),("Maurício",)], schema= StructType([StructField("A", StringType(),True)]))
df.show()
+--------+
|       A|
+--------+
| Vit?ria|
|    Jo?o|
|Maur?cio|
+--------+

当我使用translate函数时,这是的结果

df.select("A",
F.translate(F.col("A"), "áãâàéêèíîìóõôòúûùç", "aaaaeeeiiioooouuuc").alias("unaccent")).show()
+--------+--------+
|       A|unaccent|
+--------+--------+
| Vit?ria| Vitaria|
|    Jo?o|    Joao|
|Maur?cio|Mauracio|
+--------+--------+

你有没有想过如何去掉这些特殊的字符?

问题似乎出在IDE中,而不是PySpark中。

我的环境:VS代码中的jupiter笔记本(macos(:

df.withColumn(
"unaccent", 
F.translate(F.col("A"), "áãâàéêèíîìóõôòúûùç", "aaaaeeeiiioooouuuc")
).show()

产生正确的输出:

+--------+--------+
|       A|unaccent|
+--------+--------+
| Vitória| Vitoria|
|    João|    Joao|
|Maurício|Mauricio|
+--------+--------+

(备件版本=3.2.1(

最新更新