在我的数据集中,我有一个包含html代码的值的变量,例如:
<font color="#800080">None of these</font>
。
我想用Other
替换它:
df$Country <- gsub("<font color="#800080">None of these</font>", "Other", df$Country)
然而,这不起作用,这可能是由#
- 字符引起的。我该如何解决这个问题?
部分数据:
structure(c(2L, 1L, 1L, 1L, 1L), .Label = c("Spain", "<font color=\"#800080\">None of these</font>"), class = "factor")
答案 0 :(得分:2)
html上的正则表达式的所有这些问题都是不使用它的原因。假设您的数据是作为实际的html文档开始的,请改用XPath。这是一个例子:
html.text <- '<html>
<head></head>
<body>
<div><font color="#800080">None of these</font></div>
</body>
<html>'
library(XML)
html <- htmlTreeParse(html.text,useInternalNodes=TRUE)
replaceNodes(html['//font[@color="#800080"]'][[1]],"Other")
# <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
# <html>
# <head></head>
# <body>
# <div>Other</div>
# </body>
# </html>
答案 1 :(得分:1)
有两种选择可供选择。两者都假设我们从看起来像这样的东西开始。
x <- '<font color="#800080">None of these</font>'
选项1:使用不同的引用。当您使用双引号来识别您的&#34;模式&#34;参数,它结束于它遇到的下一个双引号,它出现在#
之前。因此,您可以尝试用单引号括起模式。
gsub('<font color="#800080">None of these</font>', "other", x)
选项2:转义引号字符。这就像在引号前加\
以表明它应该被转义一样简单。
gsub("<font color=\"#800080\">None of these</font>", "other", x)