PySpark 删除所有特殊字符的所有列名中的特殊字符

5 special-characters str-replace apache-spark apache-spark-sql pyspark

我试图从所有列中删除所有特殊字符。我正在使用以下命令:

import pyspark.sql.functions as F

df_spark = spark_df.select([F.col(col).alias(col.replace(' ', '_')) for col in df.columns])
df_spark1 = df_spark.select([F.col(col).alias(col.replace('%', '_')) for col in df_spark.columns])
df_spark = df_spark1.select([F.col(col).alias(col.replace(',', '_')) for col in df_spark1.columns])
df_spark1 = df_spark.select([F.col(col).alias(col.replace('(', '_')) for col in df_spark.columns])
df_spark2 = df_spark1.select([F.col(col).alias(col.replace(')', '_')) for col in df_spark1.columns])
Run Code Online (Sandbox Code Playgroud)

是否有一种更简单的方法可以在一个命令中替换所有特殊字符(不仅仅是上面的 5 个)?我在 Databricks 上使用 PySpark。

Shu*_*ain 7

您可以替换除 Az 和 0-9 之外的任何字符

import pyspark.sql.functions as F
import re

df = df.select([F.col(column_name).alias(re.sub("[^0-9a-zA-Z$]+", "", column_name)) for column_name in df.columns])
Run Code Online (Sandbox Code Playgroud)