PySpark 2 - 正则表达式取代之前的一切
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PySpark 2 - 正则表达式取代之前的一切相关的知识,希望对你有一定的参考价值。
我有一个类似的记录
"_row"
"<BR>Datetime:2018.06.30^
Name:ABC^
Se:4^
Machine:XXXXXXX^
InnerTrace:^
AdditionalInfo:^
<ER>
我想删除之前的一切 在每条记录中。使用spark数据帧有一种简单的方法吗?
import pyspark.sql.functions as f
data.select(f.regexp_replace(pattern='
<BR>',replacement="<BR>",str="row")
这样的事情?该模式应该是什么?
答案
要匹配所有字符直到字符串的开头,您可以使用.*<BR>
。但是,这与换行符(
)不匹配。我找到了here的解决方案,所以我们的模式可能是(?s).*<BR>
。下面给出一个工作实例,希望这有帮助!
import pyspark.sql.functions as F
df = spark.createDataFrame([('''"_row"
"<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>
以上是关于PySpark 2 - 正则表达式取代之前的一切的主要内容,如果未能解决你的问题,请参考以下文章