R替换字符串中的字符(如果出现在位置之后或多次)



我试图用textreadr导入面试转录,但它的工作原理是通过定位分隔符(通常是冒号)将文本分隔成两列。在转录中,我偶尔会在响应文本的正文中出现一个冒号,这会导致错误。我希望用其他东西(例如破折号或下划线)来代替这些冒号,但不知道该怎么做。

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

编辑

Ok通过字符串包找到了一个不合适的解决方案:

首先,我通过替换所有冒号

dat = str_replace_all(text,":","_")

然后我只插入我想通过保留的第一个冒号

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

不太好,但它奏效了。。。。

您可以使用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)

相关内容

最新更新