[英]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.