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

Csv Reader引号解析异常求助:JSON字符串被错误拆分

问题解决方法

问题根源

你遇到的问题是因为CSV字符串里的JSON字段采用了反斜杠\转义双引号,但这不符合CSV的标准转义规则——CSV中被双引号包裹的字段里,双引号应该用两个双引号""来转义。Python字符串里的\"会被解析成单个双引号,导致CSV解析器误将JSON内部的逗号当成字段分隔符,进而拆分了原本完整的JSON字符串。

修复方案

方案1:修正原始CSV字符串的转义格式

把字符串中的\"替换为"",遵循CSV标准转义规则,csv.reader默认的配置就能正确识别被包裹的JSON字段:

import csv
from io import StringIO

# 将\"替换为"",符合CSV标准转义逻辑
s = """url,forgeresponsetype,identifiers,metadata,partitionkey,sortkey,expirationdate,lastmodifieddate,redirectkey,siteid,locale,type,update_date
https://www.expedia.com/Seattle-Hotels.d178307.Travel-Guide-Hotels,MOVED_PERMANENTLY,"{""filter"":""freeinternet"",""region"":""178307""}",,,HOTEL_DESTINATION_THEME.494647,1.en_US.filter:freeinternet.region:178307,1696746399,2023-06-18T06:26:40.521Z,,1,en_US,HOTEL_DESTINATION_THEME,21/06/23
https://www.expedia.com/Seattle-Hotels.d178307.Travel-Guide-Hotels,MOVED_PERMANENTLY,"{""filter"":""freeinternet"",""region"":""178307""}",,,HOTEL_DESTINATION_THEME.494647,1.en_US.filter:freeinternet.region:178307,1696746399,2023-06-18T06:26:40.521Z,,1,en_US,HOTEL_DESTINATION_THEME,21/06/23
https://www.expedia.com/Seattle-Hotels.d178307.Travel-Guide-Hotels,MOVED_PERMANENTLY,"{""filter"":""freeinternet"",""region"":""178307""}",,,HOTEL_DESTINATION_THEME.494647,1.en_US.filter:freeinternet.region:178307,1696746399,2023-06-18T06:26:40.521Z,,1,en_US,HOTEL_DESTINATION_THEME,21/06/23"""

f = StringIO(s)
reader = csv.reader(f, delimiter=',')
xd = [row for row in reader]

# 查看第一条数据的identifiers字段(索引为2)
print(xd[1][2])  # 输出:{"filter":"freeinternet","region":"178307"}

方案2:无法修改原始字符串时的预处理逻辑

如果原始CSV数据固定使用反斜杠转义双引号,可以先对字符串做预处理,把\"替换为""后再交给csv.reader解析:

import csv
from io import StringIO

s = u"""url,forgeresponsetype,identifiers,metadata,partitionkey,sortkey,expirationdate,lastmodifieddate,redirectkey,siteid,locale,type,update_date
https://www.expedia.com/Seattle-Hotels.d178307.Travel-Guide-Hotels,MOVED_PERMANENTLY,"{\"filter\":\"freeinternet\",\"region\":\"178307\"}",,,HOTEL_DESTINATION_THEME.494647,1.en_US.filter:freeinternet.region:178307,1696746399,2023-06-18T06:26:40.521Z,,1,en_US,HOTEL_DESTINATION_THEME,21/06/23
https://www.expedia.com/Seattle-Hotels.d178307.Travel-Guide-Hotels,MOVED_PERMANENTLY,"{\"filter\":\"freeinternet\",\"region\":\"178307\"}",,,HOTEL_DESTINATION_THEME.494647,1.en_US.filter:freeinternet.region:178307,1696746399,2023-06-18T06:26:40.521Z,,1,en_US,HOTEL_DESTINATION_THEME,21/06/23
https://www.expedia.com/Seattle-Hotels.d178307.Travel-Guide-Hotels,MOVED_PERMANENTLY,"{\"filter\":\"freeinternet\",\"region\":\"178307\"}",,,HOTEL_DESTINATION_THEME.494647,1.en_US.filter:freeinternet.region:178307,1696746399,2023-06-18T06:26:40.521Z,,1,en_US,HOTEL_DESTINATION_THEME,21/06/23"""

# 预处理:转换CSV转义规则
processed_s = s.replace('\\"', '""')
f = StringIO(processed_s)

reader = csv.reader(f, delimiter=',')
xd = [row for row in reader]

print(xd[1][2])  # 输出:{"filter":"freeinternet","region":"178307"}

验证结果

运行任意一种方案的代码后,identifiers字段都会完整保留原始JSON字符串,不会被拆分成多个字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 20:07:01