【发布时间】:2020-05-17 13:55:06
【问题描述】:
我正在尝试匹配段落中的句子并替换它们。
下面是数据框 -
fulltext = c(rep("<span style=\"font-family:Calibri\"><span style=\"font-size:18px\">__ - Now</span>\r\n\r\n<strong><span style=\"font-size:24px\">X - Soon</span></strong>\r\n\r\n<span style=\"font-size:18px\">__ - N</span></span><span style=\"font-family:Calibri\"><span style=\"font-size:18px\">ext Scheduled Maintenance or Inspection</span></span>",3),
"<span style=\"font-size:20px\"><strong><span style=\"font-family:"Calibri",sans-serif\">What is Triggering this Expert Alert?</span></strong></span>")
cleantext = c("__ - Now", "X - Soon", "ext Scheduled Maintenance or Inspection", "What is Triggering this Expert Alert?")
replacetext = c("__ - Nu", "X - Binnenkort", "ext Gepland onderhoud of inspectie", "Wat veroorzaakt deze expertwaarschuwing?")
data5 = data.frame(fulltext, cleantext, replacetext)
这就是我想要做的 -
- 从cleantext中取出句子
- 与全文匹配
- 将 cleantext 替换为全文中的 replacetext
例如。
以上是完整的段落,我想用 Wat veroorzaakt deze Expertwaarschuwing 替换粗体句子?
输出应该看起来 -
这是我迄今为止尝试过的。现在我尝试了几种方法来做到这一点。
- 使用字符串替换
- 尝试将 ^ 和 $ 添加到句子的开头和结尾,然后使用 gsub 将其匹配为正则表达式模式。但我认为这只适用于文字。下面是我的尝试,但没有奏效。
data5$cleantext2 = paste0("^",data5$cleantext,"$")
gsub(data1$Cleantext2[1], data1$replacetext[1], data1$fulltext[1])
【问题讨论】:
-
^和$会挫败你的尝试,因为它之前和之后似乎都有一些东西。您可以尝试使用单词边界,也许是paste0("\\b", data5$cleantext, "\\b")。 -
顺便说一句:
gsub一次只能处理一种模式;如果您需要在整个框架中执行此操作,可能是mapply(gsub, data1$Clean2, data1$dutch, data1$en_us)。 -
是的,我尝试使用 mapply 应用 gsub。它不按我想要的方式工作。我现在将尝试 paste0 解决方案。
-
@r2evans 添加 \\b 不起作用 -
paste0("\\b", data5$cleantext, "\\b") -
哦,我认为这将是一个正则表达式解决方案。我正在用 R 和 Python 构建应用程序。
标签: python html r regex string