Соответствие шаблону регулярного выражения PySpark - PullRequest
0 голосов
/ 22 января 2020

Я хочу преобразовать ниже регулярное выражение в pyspark.

Например: + 420602642919 - этот тип телефона нам нужно фильтровать с помощью регулярных выражений

("/^((\+|00)(42)|0)?((060|660|664|676|68[0-1]|688)([0-9]){7}|(699)([0-9]){8})$/")

Как этого добиться в Pyspark

1 Ответ

0 голосов
/ 22 января 2020

Вы можете применить свое регулярное выражение с помощью функции столбца 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|
+-------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...