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

如何按|分割字符串并去除重复项?已尝试strsplit未成功

嘿,我来帮你解决这个问题!你提到用strsplit没得到预期结果,估计是踩了strsplit返回列表的坑,咱们一步步来搞定:


针对R语言的解决方案

strsplit在R里返回的是列表对象,直接去重会出错,得先转成向量再处理:

  • 第一步:正确分割字符串
    注意|是正则表达式里的特殊字符(表示“或”),所以必须转义才能匹配字面的|,用\\|或者[|]都可以:

    my_str <- "apple|banana|apple|orange|banana|grape"
    split_list <- strsplit(my_str, "\\|")  # 返回一个列表
    
  • 第二步:把列表转为向量
    因为strsplit返回的是长度为1的列表,我们可以用[[1]]提取里面的向量,或者用unlist()展开:

    split_vec <- split_list[[1]]
    # 等价于 split_vec <- unlist(strsplit(my_str, "\\|"))
    
  • 第三步:去除重复项
    用R内置的unique()函数就能轻松去重:

    unique_items <- unique(split_vec)
    

完整示例代码

# 定义你的字符串
my_str <- "apple|banana|apple|orange|banana|grape"

# 分割→转向量→去重
split_vec <- strsplit(my_str, "\\|")[[1]]
unique_items <- unique(split_vec)

# 查看结果
print(unique_items)
# 输出: [1] "apple"  "banana" "orange" "grape"

如果你用的是Python(补充)

要是你其实是用Python(可能混淆了函数名),方法更简洁:

my_str = "apple|banana|apple|orange|banana|grape"
# 分割字符串
split_list = my_str.split('|')
# 去重并保持原顺序(用dict.fromkeys)
unique_items = list(dict.fromkeys(split_list))
# 要是不在乎顺序,也可以用set:unique_items = list(set(split_list))

print(unique_items)
# 输出: ['apple', 'banana', 'orange', 'grape']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:28:31