regexp_replace中的Pyspark sql问题regexp_replace(COALESCE(“今天|是|好|day”,''),'\\|','>')

tv6aics1  于 2023-04-19  发布在  Spark
关注(0)|答案(1)|浏览(149)

我在pyspark sql中使用regex_replace函数时遇到问题。我需要将管道符号|替换为>,例如:

regexp_replace(COALESCE("Today | is | good | day", ''),  '\\|',  '>')

输入:Today | is | good | day
需要输出:Today > is > good > day
但得到这个:>T>o>d>a>y> >|> >i>s> >|> >g>o>o>d> >|> >d>a>y>
它只发生在一个sql被写入

job_ctx.spark.sql('''select regexp_replace(COALESCE("Today | is | good | day", ''),'\\|','>') as column''')

有人建议如何在pyspark.sql中解决这个问题吗?

rmbxnbpk

rmbxnbpk1#

尝试使用四个斜杠而不是两个**\\\\**进行转义

spark.sql('''select regexp_replace(COALESCE("Today | is | good | day", ''),'\\\\|','>') as column''').show(10,False)
#+-----------------------+
#|column                 |
#+-----------------------+
#|Today > is > good > day|
#+-----------------------+

另一种方法是使用**translate**函数,这样我们就不需要转义了

spark.sql('''select translate(COALESCE("Today | is | good | day", ''),'|','>') as column''').show(10,False)
#+-----------------------+
#|column                 |
#+-----------------------+
#|Today > is > good > day|
#+-----------------------+

相关问题