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

如何使用strsplit将指定字符串分割为目标数据框格式?

用strsplit处理键值对字符串并生成目标数据框

针对你给出的字符串,直接按=拆分不可行——因为部分值包含空格(比如nameinfo的取值),会干扰拆分逻辑。可以先通过正则标记每个键值对的边界,再用strsplit分步处理,同时完美保留空值,具体实现如下:

步骤1:预处理字符串,标记键值对边界

先用gsub在每个键(形如xxx=)前插入分隔符|,把每个键值对独立出来:

mystring <- 'nameinfo=Joe, Bloggs [[UK gender=2 id1=6.2 id2=7 id=3 id4= id5=0 total=20.6'
processed_str <- gsub("(\\w+=)", "|\\1", mystring)

步骤2:拆分出单个键值对

用strsplit按|拆分,过滤掉开头的空元素:

key_value_pairs <- strsplit(processed_str, "\\|")[[1]]
key_value_pairs <- key_value_pairs[key_value_pairs != ""]

步骤3:整理成目标格式的数据框

直接将拆分后的键值对转为数据框,就是你想要的格式:

mydf <- data.frame(content = key_value_pairs)

运行后得到的结果完全符合预期:

> mydf
                  content
1 nameinfo=Joe, Bloggs [[UK
2                gender=2
3                 id1=6.2
4                  id2=7
5                   id=3
6                   id4=
7                  id5=0
8               total=20.6

如果需要进一步将键和值拆分到单独列,可继续处理:

split_pairs <- lapply(key_value_pairs, function(x) {
  parts <- strsplit(x, "=", fixed = TRUE)[[1]]
  list(key = parts[1], value = ifelse(length(parts) > 1, parts[2], ""))
})
mydf_split <- do.call(rbind.data.frame, split_pairs)
colnames(mydf_split) <- c("key", "value")

拆分后的键值数据框:

> mydf_split
       key               value
1 nameinfo Joe, Bloggs [[UK 
2   gender                  2
3     id1                 6.2
4     id2                   7
5       id                   3
6      id4                    
7      id5                   0
8    total                20.6

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:56:10