如何按点和下划线分割字符串并生成两列球队名称数据?
解决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
相关产品推荐
相关产品推荐

