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

PySpark读取CSV时字段内嵌转义引号识别错误如何解决?

问题根因

你遇到的解析错误是因为目标CSV不符合RFC4180标准CSV格式,默认的Spark CSV解析器会将Sample Company后的"识别为字段闭合标记,后续的逗号就会触发列拆分,无法识别为字段内部内容。


解决方案

方案1:整行读取自定义解析(最稳妥,适配所有非标准格式)

直接关闭Spark的自动列拆分逻辑,先整行读取所有内容,再自行实现解析规则,适配你当前的引号格式:

from pyspark.sql.functions import col, regexp_replace

# 整行读取CSV文件,不做自动拆分
df_raw = spark.read.text(path_to_csv)

# 提取并过滤表头(如果CSV包含表头)
header = df_raw.first()[0]
df_data = df_raw.filter(col("value") != header)

# 自定义规则解析单列内容,可根据实际格式调整正则
df_parsed = df_data.withColumn(
    "your_column_name",
    # 匹配开头两个双引号+内容+末尾一个双引号,提取中间内容
    regexp_replace(col("value"), r'^""(.*)"$', r"$1")
)

# 注册临时表
df_parsed.createOrReplaceTempView("table_name")

如果有多列解析需求,可以自定义UDF实现更复杂的拆分规则,灵活性远高于默认CSV解析器。


方案2:调整Spark CSV解析参数(适配3.0+版本)

如果你使用的是Spark 3.0及以上版本,可以新增charToEscapeQuoteEscaping参数,适配连续双引号的转义规则:

spark.read.format('csv')\
  .option('header', 'true')\
  .option('inferschema', True)\
  .option('quote', '"')\
  .option('escape', '"')\
  .option('charToEscapeQuoteEscaping', '"')\
  .load(path_to_csv)\
  .createOrReplaceTempView('table_name')

该参数用于指定转义quote转义符的字符,可兼容你当前的非标准转义格式。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:54:03