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

如何在R中按逗号拆分字符串但保留带逗号的日期?

在R中拆分带引号的CSV格式字符串

针对你提供的带引号的CSV格式字符串,有两种简单的处理方式可以实现需求:

方法一:利用CSV读取函数(推荐)

这种字符串本质是标准的CSV单行数据,直接用R的CSV读取函数可以自动识别引号内的逗号为字段内容,不会错误拆分:

# 定义原始字符串
raw_str <- 'ABCDE,"January 10, 2010",F,,,,GH,"March 9, 2009",,,'

# 将字符串转为文本流,按CSV规则读取
csv_data <- read.table(textConnection(raw_str), 
                       sep = ",", 
                       header = FALSE, 
                       stringsAsFactors = FALSE, 
                       quote = '"')

# 转换为向量并过滤空值
final_result <- unlist(csv_data)[unlist(csv_data) != ""]

# 输出结果
cat(paste(final_result, collapse = "\n"))

运行后输出:

ABCDE
January 10, 2010
F
GH
March 9, 2009

方法二:正则表达式拆分

如果不想用CSV读取函数,可以用正则匹配不在成对引号内的逗号进行拆分:

# 定义原始字符串
raw_str <- 'ABCDE,"January 10, 2010",F,,,,GH,"March 9, 2009",,,'

# 按不在引号内的逗号拆分
split_list <- strsplit(raw_str, ',(?=(?:[^"]*"[^"]*")*[^"]*$)', perl = TRUE)[[1]]

# 过滤空元素并去除字段首尾的引号
final_result <- gsub('^"|"$', '', split_list[split_list != ""])

# 输出结果
cat(paste(final_result, collapse = "\n"))

正则表达式,(?=(?:[^"]*"[^"]*")*[^"]*$)的作用是:只匹配后面跟着偶数个引号的逗号,确保该逗号不在引号包裹的内容内部。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:40:59