【问题标题】:Filter Any Non Alpha Numeric In PySpark在 PySpark 中过滤任何非字母数字
【发布时间】:2020-11-05 11:00:44
【问题描述】:

使用 Pyspark 和 spacy 包并有一个带有标记的数据集,我试图过滤掉任何具有包含符号或非字母数字字符的标记的行。

the
house
#
was
in
the)
400s
w-ow
$crazy

应该只返回

the
house
was
in
400s

我尝试使用类似的东西 F.regexp_extract(F.col('TOKEN'), '[^[A-Za-z0-9] ]', 0) 但我想搜索整个标记而不仅仅是索引 0。我考虑过使用 contains() 语句,但似乎我必须做大量不同的 or 语句来捕获我想要排除的所有不同符号

【问题讨论】:

  • 我认为您可以使用[^A-Za-z0-9] 作为模式[^[A-Za-z0-9] ] 将匹配除字符类中列出的任何字符,后跟空格和]
  • 这是有道理的。仍然不确定如何使用regexp_extract 函数来搜索整个令牌字符串

标签: regex pyspark contains spacy


【解决方案1】:

看看这个。您可以使用rlike 函数并在过滤器处使用negation(~)

   from pyspark.sql import functions as F

    #INPUT DF
    +------+
    |  text|
    +------+
    |   the|
    | house|
    |     #|
    |   was|
    |    in|
    |  the)|
    |  400s|
    |  w-ow|
    |$crazy|
    +------+

    df.filter(~F.col("text").rlike("[^0-9A-Za-z]")).show()

    #OUTPUT DF
    # +-----+
    # | text|
    # +-----+
    # |  the|
    # |house|
    # |  was|
    # |   in|
    # | 400s|
    # +-----+

【讨论】:

    猜你喜欢
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    相关资源
    最近更新 更多