regexp_replace в pyspark sql - PullRequest
       65

regexp_replace в pyspark sql

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

Я считываю данные в spark sql из файла json и хочу использовать regex_replace для замены чего-либо внутри {} или () на ноль.

{"url":"https://demo.com","title":"https://New Arch {Onboarding}..Lets (Onboard) it."},
{"url":"https://example.com","title":"New Arch (Onboarding)"}

Мы использовали приведенный ниже шаблон -

r"(http|ftp|file|https)://[-a-z0-9+&@#/\%?=~_-|!:,.;/]*|\<.*?\>|\{.*?\}|(=+)\s*(.*?)\s*(=+)|[-#*='{}()\[\]]{1,}|\.{2,}|&\w+;"

Который сейчас не работает с -

 "\nextraneous input '\\' expecting {')', ',', '.', '[', 'OR', 'AND', 'IN', NOT, 'BETWEEN', 'LIKE', RLIKE, 'IS', EQ, '<=>', '<>', '!=', '<', LTE, '>', GTE, '+', '-', '*', '/', '%', 'DIV', '&', '|', '^', STRING}

Паттерн, который, кажется, вызывает ошибку -

[-#*='{}()\[\]]{1,}|\.{2,} and \{.*?\}

Удаление вышеуказанного паттерна sql не дает сбоя, но и шаблоны не удаляются -

select url, regexp_replace(title, '(http|ftp|file|https)://[-a-z0-9+&@#/\%?=~_-|!:,.;/]*|\<.*?\>|(=+)\s*(.*?)\s*(=+)|&\w+;', '') as text_body
        from df_table_doc


0   https://demo.com    New Arch {Onboarding}..Lets (Onboard) it..
1   https://example.com     New Arch (Onboarding)

Добавление шаблона

\{.*?\}

sql не удается с

IndexError: tuple index out of range

IndexError                                Traceback (most recent call last)
<ipython-input-1-20460659c049> in <module>
----> 1 get_ipython().run_cell_magic('spark_sql', '--limit 200', "select url, regexp_replace(title, '(http|ftp|file|https)://[-a-z0-9+&@#/\\%?=~_-|!:,.;/]*|\\<.*?\\>|\\{.*?\\}|(=+)\\s*(.*?)\\s*(=+)|&\\w+;', '') as text_body\n        from df_table_doc\n")

...