请求编写R Studio脚本:用CSV内容批量替换TXT文本内容
我来帮你完善这个R脚本,刚好能满足你给TRPG Wikidot页面添加悬浮释义的需求!
完整R脚本及说明
首先先确认你的TL.csv结构:第一列是需要替换的术语(比如Talent),第二列是对应的释义内容。假设你的CSV表头是Term(术语列)和Definition(释义列),如果实际表头是A1/B1,后面代码里对应调整列名即可。
# 设置工作目录(确保TL.csv、TEST.txt都在这个路径下) setwd("C:/Users/Alex/Documents/RWork") # 读取替换规则CSV文件 TLData <- read.csv(file = "TL.csv", header = TRUE, sep = ",") # 读取目标TXT文件的全部内容,保留原换行结构 original_content <- readLines("TEST.txt", warn = FALSE) # 合并为单个字符串方便全局替换(后续写入时会自动还原换行) full_text <- paste(original_content, collapse = "\n") # 遍历每一条术语-释义对,生成Wikidot悬浮格式并替换 for (i in 1:nrow(TLData)) { target_term <- TLData$Term[i] term_definition <- TLData$Definition[i] # 构造Wikidot悬浮代码模板 replacement_code <- paste0('[[span class="hover"]] ', target_term, ' [[span]] ', term_definition, ' [[/span]][[/span]]') # 精确替换术语(fixed=TRUE避免正则匹配干扰,比如不会误替换包含该术语的其他词) full_text <- gsub(pattern = target_term, replacement = replacement_code, x = full_text, fixed = TRUE) } # 将修改后的内容写入输出文件 writeLines(full_text, "TESTOUTPUT.txt") # 控制台提示完成 cat("替换完成!已生成TESTOUTPUT.txt文件\n")
关键细节说明
- 精确匹配:
fixed=TRUE参数确保只会替换完全匹配的术语,比如不会把Talented里的Talent误替换掉;如果需要忽略大小写匹配,可以添加ignore.case=TRUE。 - 保留格式:用
readLines和writeLines配合paste(collapse="\n"),能完美保留原TXT文件的换行和段落结构。 - 灵活适配:如果你的CSV列名不是
Term/Definition,比如是A1/B1,只需要把代码里的TLData$Term改成TLData$A1,TLData$Definition改成TLData$B1即可。
内容的提问来源于stack exchange,提问作者AlxChemist
相关产品推荐
相关产品推荐

