从spark数据框中的字符串列中提取单词

Sree51

我在spark数据框中有一个带有文本的列。

我想提取所有以特殊字符开头的单词,'@'regexp_extract从该文本列的每一行中使用如果文本包含多个以'@'开头的单词,则仅返回第一个。

我正在寻找提取与我的火花模式匹配的多个单词。

data_frame.withColumn("Names", regexp_extract($"text","(?<=^|(?<=[^a-zA-Z0-9-_\.]))@([A-Za-z]+[A-Za-z0-9_]+)",1).show

输入样例: @always_nidhi @YouTube no i dnt understand bt i loved the music nd their dance awesome all the song of this mve is rocking

样本输出: @always_nidhi,@YouTube

阿米特·库玛(Amit Kumar)

您可以在spark中创建udf函数,如下所示:

import java.util.regex.Pattern
import org.apache.spark.sql.functions.udf
import org.apache.spark.sql.functions.lit

def regexp_extractAll = udf((job: String, exp: String, groupIdx: Int) => {
      println("the column value is" + job.toString())
      val pattern = Pattern.compile(exp.toString)
      val m = pattern.matcher(job.toString)
      var result = Seq[String]()
      while (m.find) {
        val temp = 
        result =result:+m.group(groupIdx)
      }
      result.mkString(",")
    })

然后按如下所示调用udf:

data_frame.withColumn("Names", regexp_extractAll(new Column("text"), lit("@\\w+"), lit(0))).show()

在上方,您的输出如下:

+--------------------+
|               Names|
+--------------------+
|@always_nidhi,@Yo...|
+--------------------+

根据您在问题中发布的输出,我使用了正则表达式。您可以对其进行修改以适合您的需求。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当它们是“因素”时,从R中的数据框中提取字符串列

在数据框字符串列中查找单词列表

Python:从数据框字符串列中提取维度数据,并为每个列创建值

根据字符串列表从pandas数据框中提取值

如何在pandas数据框中的列的所有行中提取字符串中的大写单词?

如何从Spark的字符串列中提取数字部分?

如何在数据框列中提取所有匹配的模式(字符串中的单词)?

从不在基本字符串中的字符串列表中提取单个单词或短语

从数据框中提取单词

熊猫:根据从旧数据框中的字符串中提取的数据创建新的数据框

从数据框中的字符串中提取子字符串

替换 Spark 数据框中嵌套的 json 字符串列中的值

从字符串列中提取数字

如何从字符串列中提取数字?

从字符串列表中提取薪水

仅从字符串列中提取数值

從數據框字符串列中提取特定單詞並存儲在 Python 的新列中

如何从Azure数据流中的字符串列中提取dd-mm-yyyy格式的数据?

Python Spark从数据框中提取字符

对于熊猫数据框中字符串列中的每个单词,在前后找到 5 个周围单词,然后在新数据框中插入新列

从sql中的字符串中提取匹配的单词

如何从python中的字符串中提取最长的单词

R中的REGEX:从字符串中提取单词

如何从字符串中提取文件中的单词

从R中的字符串中提取单词

从JavaScript中的字符串中提取特定单词

从sql server中的字符串中提取单词

从字符串中提取引号中的单词

仅从 Python 中的混合字符串中提取单词