python - PySpark 2 - 正则表达式替换之前的所有内容 <BR>

标签 python apache-spark pyspark apache-spark-2.0

我有一个类似的记录

"_row"\n"<BR>Datetime:2018.06.30^
Name:ABC^
Se:4^
Machine:XXXXXXX^
InnerTrace:^
AdditionalInfo:^
<ER>

我想删除每条记录中
之前的所有内容。有没有一种简单的方法可以使用 Spark DataFrame 来做到这一点

import pyspark.sql.functions as f

data.select(f.regexp_replace(pattern='\n<BR>',replacement="<BR>",str="row")

类似这样的事情吗?模式应该是什么?

最佳答案

要匹配字符串开头之前的所有字符,您可以使用 .*<BR> 。但是,这与换行符 ( \n ) 不匹配。我找到了解决方案 here ,所以我们的模式可以是 (?s).*<BR> 。下面给出了一个工作示例,希望对您有所帮助!

import pyspark.sql.functions as F

df = spark.createDataFrame([('''"_row"\n"<BR>Datetime:2018.06.30^
Name:ABC^
Se:4^
Machine:XXXXXXX^
InnerTrace:^
AdditionalInfo:^
<ER>''',), ],schema=['text'])

df = df.withColumn('text_cleaned',
               F.regexp_replace(F.col('text'),pattern='(?s).*<BR>',replacement="<BR>"))

让我们验证一下是否有效;

print(df.select('text').collect()[0][0])

输出

"_row"
"<BR>Datetime:2018.06.30^
Name:ABC^
Se:4^
Machine:XXXXXXX^
InnerTrace:^
AdditionalInfo:^
<ER>

print(df.select('text_cleaned').collect()[0][0])

输出:

<BR>Datetime:2018.06.30^
Name:ABC^
Se:4^
Machine:XXXXXXX^
InnerTrace:^
AdditionalInfo:^
<ER>

关于python - PySpark 2 - 正则表达式替换之前的所有内容 <BR>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51736050/

相关文章:

python - 命令完成在 ipython 5.0 中是不可见的

python - 在 Apple Silicon 上运行的 Big Sur 上安装加密时出错

python - 如何在qt中设置QPushButton的背景颜色动画?

python - 如何在pySpark中从字符串数据框中有效替换多个正则表达式模式的所有实例?

windows - 如何在 Windows 上访问 Spark 中的本地文件?

math - 是否有针对以下排名问题的优雅pyspark解决方案?

python - 将同一 DataFrame 上的每列加倍的最佳实践

theta模型的python实现(theta方法)

apache-spark - 错误 : java. lang.IllegalArgumentException:选项 'basePath' 必须是目录

python - 在 pyspark 中转换 ALS 的输入数据