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

如何按点和下划线分割字符串并生成两列球队名称数据?

解决R字符串提取球队名称的问题

我来帮你搞定这个字符串提取的问题!你的核心需求是从结构化的字符串里提取出对阵的球队名称,整理成指定格式。我们一步一步来:

步骤1:明确字符串结构

你的输入字符串里,每个赛事条目格式是:
data.events.[Team1Part1].[Team1Part2]_[Team2Part1].[Team2Part2].sites.sportsbet.h2h
比如第一个赛事:data.events.Brisbane.Broncos_Parramatta.Eels.sites.sportsbet.h2h,我们需要提取Brisbane Broncos和Parramatta Eels;第二个赛事要提取Melbourne Storm和North Queensland(匹配你给出的期望输出)。

步骤2:正确的R代码实现

假设你的输入数据存在ThisWeek$Match1里,我们可以这样处理:

# 1. 把输入字符串按空格拆分成单个赛事条目
match_entries <- strsplit(ThisWeek$Match1, " ")[[1]]

# 2. 定义函数,从单个赛事条目中提取两个球队名称
extract_teams <- function(entry) {
  # 先按下划线拆分,得到分属两队的两部分内容
  split_by_underscore <- strsplit(entry, "_")[[1]]
  
  # 提取第一队:按点拆分后取第3、4个元素(前两个是data、events)
  team1 <- paste(strsplit(split_by_underscore[1], "\\.")[[1]][3:4], collapse = " ")
  
  # 提取第二队:按点拆分后取前2个元素(跳过后面的sites等无关内容)
  team2 <- paste(strsplit(split_by_underscore[2], "\\.")[[1]][1:2], collapse = " ")
  
  return(c(team1, team2))
}

# 3. 对所有赛事条目应用函数,提取全部球队
all_teams <- unlist(lapply(match_entries, extract_teams))

# 4. 组合成你期望的输出格式
result <- c("Team 1", "Team 2", all_teams)
# 输出最终结果
cat(paste(result, collapse = " "), "\n")

运行这段代码后,就能得到你想要的结果:
Team 1 Team 2 Brisbane Broncos Parramatta Eels Melbourne Storm North Queensland

你之前代码的问题

你尝试的代码有两个关键问题:

  • strsplit(ThisWeek$Match1, "_", "\\.") 参数错误:strsplit的第二个参数是split,不能同时传入两个分隔符,应该用正则表达式split = "[._]"来匹配下划线或点,但这样会把所有分隔符都拆分,导致后续索引混乱;
  • 拆分后直接取固定索引[3], [4],没有考虑多个赛事的结构差异,也没处理多赛事的批量提取,所以无法正确获取所有球队名称。

内容的提问来源于stack exchange,提问作者Jun Edward Shin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:29:17