簡體   English   中英

刪除Spark中RDD行中的連續空格

[英]Remove consecutive spaces in RDD lines in 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())

但這沒有任何回報。 如何使用分隔符查找和替換空字符串? 謝謝! RT

您似乎只想替換字符串數據中的所有非垂直空格。 我建議使用replaceAll (替換所有與模式匹配的文本)和[\\t\\p{Zs}]+正則表達式。

這是一個示例代碼

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

這是正則表達式演示 [\\t\\p{Zs}]+匹配一個或多個標簽( \\t )或空格分隔符類別中的任何Unicode空格。

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

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

如果要直接在RDD上使用

rdd_nopunc = rdd.flatMap(lambda x: x.split()).filter(lambda x: x.replace("[,.!?:;]", ""))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM