【问题标题】:My code in R using REGEX doesn't work why and how to fix? [closed]我在 R 中使用 REGEX 的代码不起作用为什么以及如何修复? [关闭]
【发布时间】:2018-03-22 05:17:32
【问题描述】:

我想清除其中有破折号的零售商的文本。

我是 R 和编程本身的新手,所以请在这里帮助我。我一般都懂一点正则表达式。

mydata = read.csv("test4+.csv", header = TRUE)
mydata[,c("Store.Name")]

filenames <- c( "test4+.csv", "test4+.csv" )

for( f in filenames ){
  z <- readLines(f)
  a <- gsub("([S|s]potlight)\\s+(.*)", "\\1 - \\2", z)
  b <- gsub("([W|w]oolworths)\\s*(.*)", "\\1 - \\2", z)
  c <- gsub("([B|b]ig)(W)\\s*-*\\s*(.*)", "\\1 \\2 - \\3", z)

  cat(a, file=f, sep="\n")
  cat(b, file=f, sep="\n")
  cat(c, file=f, sep="\n")}


for( f in filenames ){ 
   cat(readLines(f), sep="\n")
} 

col1 应该看​​起来像 col2:

col1                                     col2
woolworths abc                     woolworths - abc
woolworths bcd bce                 woolworths - bcd bce
spotlight blah blah (blah)         spotlight - blah blah (blah)
BigW act                           Big W - act
external                           external

【问题讨论】:

  • 应该看起来像第 1 列或第 2 列?你有什么,你期望什么?
  • 它应该看起来像第 2 列
  • 所以只有第一个` `(空格)应该替换为` - `(空格-破折号-空格),对吧?
  • @CoffeehouseCoder 是的先生
  • 只做sub("\\s"," - ",mydata$col1)

标签: r regex gsub


【解决方案1】:

你可以试试这个:

a <- gsub("^(?:.*?)(\\s+)(?:.+)$", " - ", z)

其他的以此类推。

坦率地说,我之前从未在rgsub 中使用过正则表达式,但这是我所拥有的最接近的近似值。

【讨论】:

  • 有没有办法将它们应用到不同的行中,这样我就可以实现一个想法然后另一个想法。分开但不完全?
  • @user9525789 你能详细说明一下吗?
  • 我很确定您可以对b &lt;- gsub(...)c 执行完全相同的gsub() 方法。
【解决方案2】:

这应该有效:

 gsub('([[:punct:]])|\\s+',' - ',data$column) #replace white space with " - "

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    相关资源
    最近更新 更多