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

如何在R的read_csv中保留双引号以读取JSON数据

解决read_csv读取含JSON的CSV时丢失双引号的问题

问题根源

你的CSV文件中,存储JSON的字段内的双引号未遵循CSV标准转义规则。标准CSV要求字段内的双引号必须用连续两个双引号("")表示,否则解析器会将内部双引号误判为字段结束标记,导致引号丢失。

解决方案

方案1:修复CSV文件格式(推荐)

修改CSV中JSON字段的内容,将内部双引号替换为连续两个双引号。修改后的CSV内容如下:

A,B,C
1,2,"[{""C1"":""C6.bmp"",""C2"": ""C5.bmp""}]"
3,4,"[{""C1"":""C6.bmp"",""C2"": ""C5.bmp""}]"
5,6,"[{""C1"":""C6.bmp"",""C2"": ""C5.bmp""}]"
7,8,"[{""C1"":""C6.bmp"",""C2"": ""C5.bmp""}]"

此时用read_csv读取即可保留JSON中的双引号:

json_data <- read_csv("test.csv")

方案2:调整解析参数(无需修改CSV)

如果无法修改原CSV文件,可使用readr包的read_delim函数,指定quote参数为无意义字符,让解析器不处理字段内的双引号:

library(readr)
json_data <- read_delim("test.csv", delim = ",", quote = '')

读取完成后,C列会保留完整的JSON格式,可直接传入fromJSON解析。

方案3:手动恢复双引号(应急方案)

若上述方法均不可用,可在读取后通过字符串替换手动恢复双引号(仅适用于JSON结构固定的场景):

library(stringr)
json_data$C <- str_replace_all(json_data$C, "(\\w+):(\\w+\\.\\w+)", "\"\\1\":\"\\2\"")

替换后即可正常使用fromJSON解析C列数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:17:40