仅从字符串行中过滤数值

时间:2019-02-01 11:39:55

标签: scala apache-spark

我有以下两行

“ key1,c1,p1,10,t1,z1” “KEY2,c2,20,P2,T2”

我希望输出如下

“KEY1,C1,P1,T1,Z1” “ key2,c2,p2,t2”

我尝试下面的,然而所有被过滤数字。 以下是输出。有什么建议吗?

键,c,p ,, t,z 键,c ,, p,t

val data = spark.sparkContext.parallelize(List(“ key1,c1,p1,10,t1,z1”,“ key2,c2,20,p2,t2”))

val filtered_data = data.map{line => line.filterNot(_.isDigit)}

filtered_data.collect().foreach(println)

1 个答案:

答案 0 :(得分:1)

尝试一下:

val strings = List("key1,c1,p1,10,t1,z1", "key2,c2,20,p2,t2")
strings.map(_.replaceAll("([,|^]\\d+)", ""))

https://scastie.scala-lang.org/ng5mH35iQEuFo2TYSk5SeQ