如何合并以特定字符首尾、被换行分隔的行?R语言字幕数据处理
合并视频转录中拆分的台词行
针对你遇到的转录数据台词被拆分的问题,可以用R语言的分组合并方法解决,具体步骤如下:
1. 提取原始数据向量
先把原数据中的字符向量单独提取出来,方便后续处理:
original_vec <- c( "00:00:03.990 --> 00:00:05.270", "<v Bill>I'm here to take some notes. I've", "heard this will be interesting.</v>", "00:00:05.770 --> 00:00:07.370", "<v Charlie>I believe you'll be correct", "about that, Bill.</v>", "00:00:10.810 --> 00:00:11.170", "<v Bill>Awesome.</v>" )
2. 生成分组标识
通过正则表达式识别时间戳行(以00:开头)和台词起始行(以<v 开头),用cumsum生成分组ID,确保同一段台词的多行属于同一组:
group_id <- cumsum(grepl("^00:", original_vec) | grepl("^<v ", original_vec))
3. 按分组合并文本
将同一组的文本合并,单行内容直接保留,多行台词用空格连接:
merged_vec <- sapply(split(original_vec, group_id), function(x) { if (length(x) == 1) { x } else { paste(x, collapse = " ") } })
4. 转换为目标数据框
最后将合并后的向量转为数据框,得到预期结果:
intendedData <- data.frame(transcript = unname(merged_vec))
运行以上代码后,intendedData$transcript的内容就和你预期的一致了。
内容的提问来源于stack exchange,提问作者Courtney Gerver
相关产品推荐
相关产品推荐

