2017-03-14 10 views
0

スパークで(括弧をエスケープする方法。それは(括弧で空白と罰金働いていないが。私は私はTREID """\(\\(午前常にエラーを取得。私はまた、このヒントHow can I escape special symbols in scala string?を試してみましたが、それは私を助けてやった。あなたは私は、文字列(つまり、列名)に括弧を交換しようとしていますScalaの?

import org.apache.commons.lang3.StringEscapeUtils 

var newDf = df 
    for(col <- df.columns){ 
    newDf = newDf.withColumnRenamed(col,col.replaceAll(StringEscapeUtils.escapeJava("("), "_")) 
    newDf = newDf.withColumnRenamed(col,col.replaceAll(" ", "-")) 
} 

?これを解決する方法を教えてくださいすることができどうもありがとうございました!

答えて

3

でReplaceAllはあなたので、正規表現を使用していますかっこだけを入れることができますあなたがそれらをエスケープ持たないことにより、文字クラスに:

val df = Seq((1,2)).toDF("(ABC)", "C D") 

df.columns 
// res28: Array[String] = Array((ABC), C D) 

var newDf = df 
for(col <- df.columns){ 
    newDf = newDf.withColumnRenamed(col, col.replaceAll(" ", "-").replaceAll("[()]", "_")) 
} 

newDf.columns 
// res30: Array[String] = Array(_ABC_, C-D) 

または\\(|\\)をも動作するはずです:魔法のように

newDf.withColumnRenamed(col, col.replaceAll(" ", "-").replaceAll("\\(|\\)", "_")) 
+0

作品。それはいつもとても不快です。 :-( どうもありがとう! –

関連する問題