将包含 的列名括起来 火花数据帧中的引号



>我有一个数据帧,其中某些列名包含,.从下面看,第二列名称包含,

现在我想用""将那些包含,的列括起来。

以下是我的代码:

def testWriteDataframeToCSV (): Unit = {
val df = generateDF(Array(
("1", "4567-01", "one", 1, 1.0, "1", "1.1"),
("2", "4568-02", "two", 2, 2.0, "2", "2.2"),
("3", "4569-25", "three", 3, 3.0, "3", "3")
), Seq("Id", "Course,No", "data1", "data2", "data3", "data4", "data5"))
val take: Option[Int] = None
val sample: Option[Float] = None
val header = df.schema.fieldNames.mkString(",") + "n"       
}

当前标头:

header = "Id,Course,No,data1,data2,data3,data4,data5n"

预期标头:

header = "Id,"Course,No",data1,data2,data3,data4,data5n"

您只需要找到名称中具有,的元素并相应地添加引号即可。我s""" """使用了 Scala 的三引号,所以没有必要转义每边的一个引号:

df.schema.fieldNames.map{ f => if (f.contains(",")) s""""${f}"""" else f }.mkString(",")
//String = Id,"Course,No",data1,data2,data3,data4,data5

最新更新