regex - 删除 Spark 中 RDD 行中的连续空格

标签 regex scala apache-spark

经过大量编程清理后我的数据集如下所示(此处显示部分数据集)。

ABCD        A M@L                             79
BGDA        F D@L                             89

我想将其转换为以下内容以进行进一步的 Spark Dataframe 操作

ABCD,A,M@L,79
BGDA,F,D@L,89


val reg = """/\s{2,}/"""
val cleanedRDD2 = cleanedRDD1.filter(x=> !reg.pattern.matcher(x).matches())

但这没有任何返回。如何使用定界符查找和替换空字符串? 谢谢! 回复

最佳答案

您似乎只想替换字符串数据中的所有非垂直空格。我建议使用 replaceAll(替换所有匹配模式的文本)和 [\t\p{Zs}]+ 正则表达式。

这里只是一个sample code :

val s = "ABCD        A M@L                             79\nBGDA        F D@L                             89"
val reg = """[\t\p{Zs}]+"""
val cleanedRDD2 = s.replaceAll(reg, ",")
print(cleanedRDD2)
// =>  ABCD,A,M@L,79
//     BGDA,F,D@L,89

这里是 regex demo . [\t\p{Zs}]+ 匹配 1 次或多次出现的制表符 (\t) 或 Space Separator category 中的任何 Unicode 空格.

要修改RDD的内容,只需使用.map:

newRDD = yourRDD.map(elt => elt.replaceAll("""[\t\p{Zs}]+""", ","))

关于regex - 删除 Spark 中 RDD 行中的连续空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37853531/

相关文章:

java - 从 Java 调用 Xinitthreads。 Gnuplot 错误

apache-spark - Hive 外部表无法看到分区的 Parquet 文件

scala - SBT 项目中的数据框方法

algorithm - 对和算法 - 二进制搜索的性能

python - 拆分 UpperCamelCase 和 UPPERCamelCase 以分隔单词

python - 用于捕获文件名开头同时编辑文件类型和特定字符集的正则表达式

正则表达式提取第三个数字

scala - 重载具有多个参数列表的方法是否违法?

apache-spark - 为什么 Spark Mllib KMeans 算法非常慢?

java - 匹配除 1 和 0 之外的数字