0

Scalaで一重引用符を二重引用符で置き換えるにはどうすればよいですか?私は "abc"(二重引用符)を持ついくつかのレコードを持つデータファイルを持っています。これらの引用符を一重引用符で置き換え、それをデータフレームに変換する必要があります。Scala:二重引用符を一重引用符で置き換える

ラインで読み取るラインファイル
val customSchema_1 =   
    StructType(Array(
    StructField("ID", StringType, true), 
    StructField("KEY", StringType, true), 
    StructField("CODE", StringType, true)) 

val df_1 = sqlContext.read 
    .format("com.databricks.spark.csv") 
    .option("delimiter", "¦") 
    .schema(customSchema_1) 
    .load("example") 
+1

どの欄に二重引用符がありますか?あなたのスパークバージョンは何ですか? – mrsrinivas

+0

私はspark core 1.6.0を使用しています。引用符内のデータは一部のデータに散在していますが、他のデータは引用していません。 – SFatima

+0

これはbashスクリプトで簡単に解決できる問題のようですが、基本的には二重引用符で囲まれたすべての二重引用符(カラム文字列)を検索し、一重引用符で置き換える正規表現を作成する必要があります –

答えて

0

し、それらのそれぞれに、次の例を適用します。

val text: String = """Here is a lot of text and "quotes" so you may think that everything is ok until you see something "special" or "weird" 
""" 

text.replaceAll("\"", "'") 

これは、あなたの引用符の代わりに二重引用符を使用して新しい文字列値が得られます。あなたがここに単一引用符で

を二重引用符を置き換えるために、単純なUDFを作成することができます

+0

提案をありがとう!データフレームを使用している場合、これをどのように実装できますか?これを可能にするデータフレームに関数がありますか? – SFatima

0

import org.apache.spark.sql.functions.udf 

val removeDoubleQuotes = udf((x:String) => s.replace("\"","'")) 

//If df is the dataframe and use the udf to colName to replace " with ' 

df.withColumn("colName", removeDoubleQuotes($"colName")) 

簡単な例である。この情報がお役に立てば幸い!

関連する問題