正则表达式为 trim 分隔符 Spark Scala 前后的所有空格
Regex to trim all spaces before and after delimiter Spark Scala
我正在使用 spark scala 读取带分隔符的文本文件。我正在尝试为分隔符 ~ 之前的所有内容以及之后的所有内容创建一个正则表达式 trim 。目前,我在所有空间都是 trimmed 的地方拥有它。我正在寻找有关如何完成此操作或进行改进的任何建议。也许某种 trim 函数会更简单。
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
最简单的方法可能是按分隔符 (~
) 拆分,然后 trim
每个生成的标记;然后 - 使用 mkString
:
将标记组合回单个字符串
rdd.map(_.split("~").map(_.trim).mkString("~"))
或者 - 使用正则表达式:
rdd.map(_.replaceAll("\s*?~\s*", "~"))
我正在使用 spark scala 读取带分隔符的文本文件。我正在尝试为分隔符 ~ 之前的所有内容以及之后的所有内容创建一个正则表达式 trim 。目前,我在所有空间都是 trimmed 的地方拥有它。我正在寻找有关如何完成此操作或进行改进的任何建议。也许某种 trim 函数会更简单。
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
最简单的方法可能是按分隔符 (~
) 拆分,然后 trim
每个生成的标记;然后 - 使用 mkString
:
rdd.map(_.split("~").map(_.trim).mkString("~"))
或者 - 使用正则表达式:
rdd.map(_.replaceAll("\s*?~\s*", "~"))