我有一个值中包含双引号(“)和逗号的 Dataframe 。我尝试将 Dataframe 导出到csv中,但不幸的是,双引号在导出的csv中显示不正确。
我设法通过将“quoteAll”设置为true来处理所有其他特殊字符。
在csv中,如果你用两个双引号替换单双引号,它会工作得很好。但是当我用下面的代码导出到csv时,它会在导出的csv中替换“with“。
%scala
val df = Seq((1, "A,B,C,\"DEF\""), (2, "DEF")).toDF("ID", "Val")
val updatedDf = df.columns.foldLeft(df)((acc, colname) => acc.withColumn(colname,regexp_replace(acc(s"`$colname`"), "\"", "\"\"")))
deltaDS.coalesce(1).write
.option("header", true)
.option("encoding", "utf-8")
.option("quoteAll", true)
.mode("Overwrite").csv("[Location to store csv]")
输出:
预期输出:
我该怎么办?
2条答案
按热度按时间jvlzgdj91#
您尚未提供所需的确切纯文本csv,因此很难猜测。您是否正在查找此文件?
生成的csv:
mm9b1k5b2#
根据输入,以下似乎是 Dataframe 输出。
文件名:
已更新数据框:
由于quoteAll被设置为true,它将按照spark文档中提到的那样工作。
当转换为CSV时,输出如下。
文件格式.csv:
已更新的DF.csv文件:
处理转义字符的一个建议是使用原始 Dataframe 并将转义字符设为空。但请注意它可能对其他特殊字符产生的影响。
第一次
希望这是预期的输出...