You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpark写入CSV文件时双引号格式异常,求解决方案

解决方案

要满足你的两个需求——保留字段前后空格、避免字段内双引号被转义,需调整两处关键配置:

1. 保留字段首尾空格

你当前将ignoreLeadingWhiteSpace和ignoreTrailingWhiteSpace设为true,这两个参数会自动剔除字段的前后空格。要原样保留空格,必须将它们改为false。

2. 禁止字段内双引号被转义

你设置了escape="\"",会让PySpark用双引号转义字段内的双引号(将单个"转为""),结合quoteAll=true就会出现"""Nordenham """的结果。要让字段内的双引号原样输出,需将escape改为一个不会出现在字段内容中的特殊字符(比如~或\),这样PySpark就不会转义字段内的双引号。

修改后的代码如下:

df_repartitioned.write.format("csv") \
        .option("compression", "gzip") \
        .option("header", "true") \
        .option("delimiter", "|") \
        .option("ignoreLeadingWhiteSpace", "false") \  # 关闭首尾空格剔除
        .option("ignoreTrailingWhiteSpace","false") \  # 关闭首尾空格剔除
        .option("treatEmptyValuesAsNulls", "true") \
        .option("nullValue", "null") \
        .option("emptyValue", "null") \
        .option("quoteAll", True) \
        .option("escape", "~") \  # 替换为非双引号的特殊字符
        .save(output_path)

注意事项

这种输出格式不符合标准CSV规范(标准要求字段内的引号必须转义),后续用常规工具读取时可能出现解析错误,仅适用于特定场景需求。

内容的提问来源于stack exchange,提问作者Marcus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 12:10:19