我正在rvest用来解析一个网站.我正在用这些小小的不间断空间撞墙.如何删除 解析后的html文档中元素创建的空格?
library("rvest")
library("stringr")
minimal <- html("<!doctype html><title>blah</title> <p> foo")
bodytext <- minimal %>%
html_node("body") %>%
html_text
Run Code Online (Sandbox Code Playgroud)
现在我已经提取了正文:
bodytext
[1] " foo"
Run Code Online (Sandbox Code Playgroud)
但是,我无法删除那个讨厌的空白!
str_trim(bodytext)
gsub(pattern = " ", "", bodytext)
Run Code Online (Sandbox Code Playgroud)
jdharrison回答:
gsub("\\W", "", bodytext)
Run Code Online (Sandbox Code Playgroud)
并且,这将有效,但你可以使用:
gsub("[[:space:]]", "", bodytext)
Run Code Online (Sandbox Code Playgroud)
这将删除所有Space characters: tab, newline, vertical tab, form feed, carriage return, space and possibly other locale-dependent characters.它是一个非常可读的替代其他,神秘的正则表达式类.
我遇到了同样的问题,并已经确定了简单的替代
gsub(intToUtf8(160),'',bodytext)
Run Code Online (Sandbox Code Playgroud)
(编辑正确的案例.)
代表 “不间断空格”,在 unicode 空间中,它具有与“常规”空格(即" ")不同的字符。比较
charToRaw(" foo")
# [1] 20 66 6f 6f
charToRaw(bodytext)
# [1] c2 a0 66 6f 6f
Run Code Online (Sandbox Code Playgroud)
因此,您需要使用特殊字符类之一来表示空白。您可以使用以下命令删除所有空格
gsub("\\s", "", bodytext)
Run Code Online (Sandbox Code Playgroud)
在 Windows 上,我需要确保字符串的编码设置正确
Encoding(bodytext) <- "UTF-8"
gsub("\\s", "", bodytext)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3810 次 |
| 最近记录: |