如何搜索/替换一系列单词

时间:2011-09-06 13:58:59

标签: search replace range text-files

我想替换一个看起来像这样的txt:

y1991<-cbind(data.frame(Depth_m$X, Depth_m$Y, BotTemp$y1991_7_te, BotSal$y1991_7_sa, PSIsobarst$y1991_7_so,
SurfSaline$y1991_7_so, SurfHeight$y1991_7_so, SurfTSST$y1991_7_so, Depth_m$Depth))
names(y1991)<-proj_names
y1991[] <- lapply(y1991, function(x){replace(x, x == 0, NA)})
y1991<-na.omit(y1991)

我有六十多年的数据,所以我想要相同的代码,只有1992,1993,1994等。取代1991年,所以它看起来像1992年:

  

y1992&lt; -cbind(data.frame(Depth_m $ X,Depth_m $ Y,BotTemp $ y1992_7_te,   BotSal $ y1992_7_sa,PSIsobarst $ y1992_7_so,SurfSaline $ y1992_7_so,   SurfHeight $ y1992_7_so,SurfTSST $ y1992_7_so,Depth_m $ Depth))   name(y1992)&lt; -proj_names y1992 []&lt; - lapply(y1992,   function(x){replace(x,x == 0,NA)})y1992&lt; -na.omit(y1992)

我一直在网上寻找答案,但到目前为止我一无所获。希望你能帮忙。 叶普

编辑: 我找到了一个解决方案,但它只给了我打印输出,而不是我可以保存的文件,但是这里有:

X<-'y1991<-cbind(data.frame(Depth_m$X, Depth_m$Y, BotTemp$y1991_7_te, BotSal$y1991_7_sa, PSIsobarst$y1991_7_so,
    SurfSaline$y1991_7_so, SurfHeight$y1991_7_so, SurfTSST$y1991_7_so, Depth_m$Depth))
    names(y1991)<-proj_names'
for(xn in 1991:2010) {
Y <- gsub("1991", xn, X)
print(Y, quote=FALSE)
}

2 个答案:

答案 0 :(得分:0)

使用您熟悉的任何语言并生成此类数据的文本字符串。从19xx到20xx的循环开始60年,如果它只是想要替换的数字,那么代码只需要用循环迭代器中的值替换数字。 让我知道您可以编程的语言,我会尝试为您编写一些内容。所有你需要知道的是

  1. 如何创建变量
  2. 如何循环使用任何条件循环,例如循环
  3. 如何进行字符串连接,可能是如何将整数转换为字符串
  4. 如何将字符串附加到输出或文件
  5. 如果您熟悉excel,也可以在Excel中执行此操作,然后将粘贴复制到文本文件中。

    希望这有帮助。

答案 1 :(得分:0)

看来你的搜索和替换要求非常简单。您可以直接扫描文本并进行替换,不是吗?我误解了你的要求吗?

如果您想使用正则表达式,请搜索“y19”后跟两位数字,并将匹配项替换为“y1992”。例如。如果使用Java:

String input =“.... your string ..”; String output = input.replaceAll(“”y19 \ d {2}([^ \ d])“,”y1992 $ 1“);

注意字符串#replaceAll()是java.util.regex.Matcher#replaceAll()的快捷方式 如果您多次运行相同的正则表达式,首先创建“模式”,然后匹配将更有效。