gpt4 book ai didi

用 R 替换多个文件中的多个字符串

转载 作者:行者123 更新时间:2023-12-04 20:02:39 27 4
gpt4 key购买 nike

我在一个文件夹中有大约 700,000 个文件,我需要在其中查找多个字符串并将其替换为不同的其他字符串(所有 4 个字符代码)。不确定文件中是否存在字符串。我正在尝试使用 gsub,但我找不到如何使用正则表达式进行操作。有人可以告诉我处理这项任务的好方法吗?

这是我到目前为止使用的代码。只有一个 y <- gsub(...) 运行良好指令但不适合我的目的,显然是因为在定义 y 变量时只考虑了最后一条 gsub 指令......

chm_files <- list.files(getwd(), pattern=("^[[:digit:]]*.chm$"), full.names=F)

for(chm_file in chm_files) {
x <- readLines(chm_file)
y <- gsub("AG02|AG07|AG05|AG18|AG19|AG08|AG09|AG17", "AGRL", x)
y <- gsub("SB28|SB42|SB43|SB33|SB41|SB34|SB39|SB35", "SWHT", x)
y <- gsub("WB28|WB42|WB43|WB32|WB09|WB33|WB41|WB26", "BARL", x)
y <- gsub("WW02|WW25|WW08|WW31|WW05|WW28|WW19|WW42", "WWHT", x)
cat(y, file=chm_file, sep="\n")
}

最佳答案

我确信在各种 R 包中已经有许多针对此任务的预构建函数,但无论如何我只是为自己和其他人准备了这个函数以供使用/修改。除了上面的任务请求之外,它还打印出跨文件功能所做的所有更改计数的跟踪日志:multi_replace .

这是它应该如何运行的一些示例代码

# local directory with files you want to work with
setwd("C:/Users/DW/Desktop/New folder")
# get a list of files based on a pattern of interest e.g. .html, .txt, .php
filer = list.files(pattern=".php")
# f - list of original string values you want to change
f <- c("localhost","dbtest","root","oldpassword")
# r - list of values to replace the above values with
# make sure the indexing of f & r
r <- c("newhost", "newdb", "newroot", "newpassword")

# Run the function and watch all your changes take place ;)
tracking_sheet <- multi_replace(filer, f, r)
tracking_sheet

关于用 R 替换多个文件中的多个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28253124/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com