我想将以下正则表达式转换为pyspark。
例如:+ 420602642919-我们需要使用正则表达式过滤的这类电话号码
("/^((\+|00)(42)|0)?((060|660|664|676|68[0-1]|688)([0-9]){7}|(699)([0-9]){8})$/")
如何在Pyspark中实现这一目标?
答案 0 :(得分:0)
您可以使用rlike列函数来应用正则表达式,如下所示:
import pyspark.sql.functions as F
#your initial dataframe
l = [('+420602642919',)
,('blabla',)]
df=spark.createDataFrame(l, ['someText'])
yourregex = '^((\+|00)(42)|0)?((060|660|664|676|68[0-1]|688)([0-9]){7}|(699)([0-9]){8})$'
#adding a column
df.withColumn('match', df.someText.rlike(yourregex)).show()
#or filtering
df.filter(df.someText.rlike(yourregex)).show()
输出:
+-------------+-----+
| someText|match|
+-------------+-----+
|+420602642919| true|
| blabla|false|
+-------------+-----+
+-------------+
| someText|
+-------------+
|+420602642919|
+-------------+