【问题标题】:Regex to trim all spaces before and after delimiter Spark Scala正则表达式修剪分隔符 Spark Scala 前后的所有空格
【发布时间】:2017-02-01 23:43:09
【问题描述】:

我正在使用 spark scala 读取一个分隔的文本文件。我正在尝试为分隔符之前的所有内容创建一个正则表达式修剪 ~ 以及之后的所有内容。目前,我拥有所有空间都被修剪的地方。我正在寻找有关如何完成此操作或改进的任何建议。也许某种修剪功能会更简单。

 def truncateRDD(fileName : String): RDD[String] = {
    val rdd = sc.textFile(fileName)
    rdd.map(lines => lines.replaceAll("""[\t\p{Zs}]+""", ""))
  }

输入:

20161111 ~     ~10~1234~ "This is an example" ~P15~-EXAMPLE~2017~ 2014567EXAMPLE

期望的输出:

20161111~~10~1234~"This is an example"~P15~-EXAMPLE~2017~2014567EXAMPLE

【问题讨论】:

    标签: regex scala apache-spark delimiter rdd


    【解决方案1】:

    最简单的方法可能是按分隔符 (~) 和 trim 拆分每个结果标记;然后 - 使用 mkString 将标记组合回单个字符串:

    rdd.map(_.split("~").map(_.trim).mkString("~"))
    

    或者 - 使用正则表达式:

    rdd.map(_.replaceAll("\\s*?~\\s*", "~"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-14
      • 1970-01-01
      • 2018-11-19
      • 2021-12-27
      • 2015-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多