我想从网站上检索产品名称,所以我在下面写下我的代码。但结果包括一些简单的信息,如\ n \ t \ t \ t。有人可以帮我如何删除这些东西? 代码:
reddoturl <- 'http://red-dot.de/pd/online-exhibition/?lang=en&c=163&a=0&y=2013&i=0&oes='
library(XML)
doc <- htmlParse(reddoturl)
reviews<-xpathSApply(doc,'//div[@class="work_contaienterner_headline"]',xmlValue)
结果: [1]“VZ-C6 / VZ-C3D \ n \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ n \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t文件相机\ n \ t \ t \ t \ t \ t \ t \ n \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t“
答案 0 :(得分:2)
我担心删除所有标签但是会这样做:
> reviews <- "VZ-C6 / VZ-C3D\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tDocument Camera\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"
> reviews <- gsub( "\\\t", "", reviews)
> reviews
[1] "VZ-C6 / VZ-C3D\n\nDocument Camera\n\n"
阅读?regex
并了解需要额外的反斜杠,因为R和正则表达式都使用“\”作为转义符,因此在前往模式的路上有两个级别的字符解析。但是在替换参数中并非如此,因此您不需要在那里使用双重转义。所以如果你想用一个“\ n”替换那些“\ n \ n”,你可以使用:
> reviews <- gsub( "\\\n\\\n", "\n", reviews)
> reviews
[1] "VZ-C6 / VZ-C3D\nDocument Camera\n"
答案 1 :(得分:1)
R中字符串的“查找和替换”操作的首选函数是sub
(仅替换第一个实例)和gsub
(替换所有实例)。这些函数在regular expression表示的字符串中查找模式,并用固定的文本字符串替换它。
例如:
s <- "VZ-C6 / VZ-C3D\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tDocument Camera\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"
gsub('\t|\n', '', s)
[1] "VZ-C6 / VZ-C3DDocument Camera"
上面的模式|
中的管道运算符(\t|\n
)确保\n
或 \t
匹配,并且''
的第二个参数表示用空字符串替换匹配(即什么都没有)。
虽然上面的s
只包含一个元素,但gsub
和sub
已经过矢量化,因此也适用于任意长度的整个矢量。