regex - 在 spark 数据框中为包含 , 的列名加上引号
问题描述
我有一个数据框,其中一些列名包含,
. 从下面看,第二列名称包含,
.
现在我想将那些包含,
.""
以下是我的代码:
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,data5\n"
预期的标题:
header = "Id,"Course,No",data1,data2,data3,data4,data5\n"
解决方案
您只需要找到,
名称中有 a 的元素并相应地添加引号。我使用了 Scala 的三引号s""" """
,因此无需在每一侧转义一个引号:
df.schema.fieldNames.map{ f => if (f.contains(",")) s""""${f}"""" else f }.mkString(",")
//String = Id,"Course,No",data1,data2,data3,data4,data5
推荐阅读
- bash - 如何在不使用重定向运算符的情况下写入文件?
- for-loop - 带有 StringBuilder 的 Java 循环逻辑 (Hangman)
- java - 功能文件中的 testdata 列数是否有任何限制 - selenium java
- c# - 从 JSON Schema 为 Sabre REST API 生成 C# 模型类
- python - Selenium 点击在 Chrome 中不起作用
- node.js - 对 nginx 后面的 Node.js 应用程序的 POST 请求未通过
- android - 毕加索语境错误
- javascript - 如何映射外部 JSON 数据?
- javascript - 如何在程序中的特定点调用 onEvent?
- python - 用辅助 y 轴绘制两个 interp1d 函数