如果在位置之后或多次发生,则R替换字符串中的字符

时间:2017-02-07 14:36:11

标签: r string replace text-mining textreader

我正在尝试使用textreadr导入面试转录,但它的工作原理是通过查找分隔符(通常是冒号)将文本分成两列。在转录中,我偶尔会在响应文本的正文中出现冒号,这会导致错误。我希望用其他东西替换这些冒号(例如破折号或下划线),但不知道如何解决这个问题。

我可以通过gregexpr()找到所有冒号的位置,但是我怎样才能替换它们?我能通过if语句以某种方式使用grep或sub吗?

修改

通过stringr包找到了一个不合理的解决方案:

首先我通过

替换所有冒号
dat = str_replace_all(text,":","_")

然后我重新插入了我想要保留的第一个冒号

dat = str_replace(dat,"_",":")

不太好,但它有效......

1 个答案:

答案 0 :(得分:0)

您可以使用strsplit,然后在第一个之后组合所有元素。类似的东西:

txn <- c("Int1: This is some text.",
         "Int2: As I speak I take a long pause: for effect",
         "Int1: This inteview is over.")               

transcripts <- strsplit(txn, ":")
interviewer <- sapply(transcripts, "[", 1)
scripts <- sapply(transcripts, function(x) paste(x[-1], collapse = ":"))
dat <- data.frame(interviewer, scripts)