如何在R中写出可被Google Sheets正确读取的CSV,解决JSON列逗号分隔错位问题
问题根源
你代码里的错误配置是导致字段拆分的核心原因:
- 手动用
dQuote给列加引号属于多余操作,会和CSV写入的自动转义逻辑冲突 write.csv时设置quote = FALSE,导致R不会自动给包含逗号、引号的特殊字段加包裹引号,JSON内部的逗号直接被识别为字段分隔符,引发列错位
正确实现代码
适配DV360回传要求的基础版本(符合你给出的「目标输出」格式)
不需要手动修改Details列内容,直接写入时开启自动引号即可:
library(tidyverse) write.csv(data, "test.csv", fileEncoding = "UTF-8", na = "", row.names = FALSE, quote = TRUE)
你也可以用tidyverse自带的write_csv,默认配置就符合要求,更简洁:
write_csv(data, "test.csv", na = "")
适配Google Sheets导出格式的版本
如果需要和你手动在Google Sheets修正后导出的多层转义格式对齐,提前替换内部引号即可:
data %>% mutate(Details = str_replace_all(Details, '"', '""')) %>% write.csv("test_gsheet.csv", fileEncoding = "UTF-8", na = "", row.names = FALSE, quote = TRUE)
验证说明
以上代码生成的CSV中,Details列会被自动用双引号包裹,列内的双引号会被转义为连续双引号,JSON内部的逗号不会被识别为字段分隔符,完全兼容DV360的SDF回传规则,不会出现列错位问题。
内容的提问来源于stack exchange,提问作者Fnguyen
相关产品推荐
相关产品推荐

