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

如何在R中正确读取含单双引号混合的CSV文件

解决特殊格式CSV的读取问题

针对你遇到的每行首尾带单引号、内部字符串用双引号包裹的CSV文件,这里提供两种高效的处理方案:

方案一:先读取行再清理首尾单引号(推荐)

这种方法先把所有行读入内存,移除首尾的单引号后再解析成数据框,能完美保留内部带逗号的字符串结构:

方法1(用stringr包,更直观)

# 如果没装stringr先安装
# install.packages("stringr")
library(stringr)
library(readr)

# 读取所有行
raw_lines <- read_lines("你的文件路径.csv")
# 移除每行开头和结尾的单引号
cleaned_lines <- str_remove_all(raw_lines, "^'|'$")
# 将清理后的文本解析为数据框
final_df <- read_csv(I(cleaned_lines), quote = '"')

方法2(用base R,无需额外包)

如果不想安装新包,用base R的sub函数也能实现:

library(readr)

raw_lines <- readLines("你的文件路径.csv")
# 用正则匹配首尾单引号并替换为空
cleaned_lines <- sub("^'(.*)'$", "\\1", raw_lines)
final_df <- read_csv(I(cleaned_lines), quote = '"')

方案二:读取时直接跳过首尾单引号(进阶)

如果你不想先读所有行,也可以尝试用read_delim指定更灵活的规则,但实际测试下来方案一的兼容性和稳定性更好。比如通过自定义quote参数结合正则,但这种方式对复杂格式的容错率较低,不优先推荐。

测试验证

假设你的CSV行是这种格式:

'name,"description,with,commas",value'

清理后会变成:

name,"description,with,commas",value

此时read_csv会正确识别3列,其中第二列的内部逗号不会被当成分隔符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 02:19:56