我正在尝试从数据框中的列中删除特殊字符(å)。
我的数据如下:
ClientID,PatientID
AR0001å,DH_HL704221157198295_91
AR00022,DH_HL704221157198295_92
我的原始数据大小约为8TB,我需要摆脱这个特殊字符。
加载数据的代码:
reader.option("header", true)
.option("sep", ",")
.option("inferSchema", false)
.option("charset", "ISO-8859-1")
.schema(schema)
.csv(path)
在我执行df.show()
后加载到数据框中后显示:
+--------+--------------------+
|ClientID| PatientID|
+--------+--------------------+
|AR0001Ã¥|DH_HL704221157198...|
|AR00022 |DH_HL704221157198...|
+--------+--------------------+
代码我曾经试图替换这个角色:
df.withColumn("ClientID", functions.regexp_replace(df.col("ClientID"), "\å", ""));
但是这没用。如果我将charset更改为“UTF-8”,则在数据框中加载数据时可以正常工作。
我无法找到当前字符集(ISO-8859-1)的解决方案。
答案 0 :(得分:2)
有些事情需要注意,
\
colName
应为ClientId
或PatientID
如果你做了所有这些事情,那么我建议,不要在“å”上匹配,尝试匹配你想要保留的角色。例如,对于ClientID
列,
df.withColumn("ClientID", functions.regexp_replace(df.col("ClientID"), "[^A-Z0-9_]", ""));
另一种方法是将UTF-8字符“å”转换为等效的ISO-8859-1,并替换为结果字符串。
String escapeChar = new String("å".getBytes("UTF-8"), "ISO-8859-1");