我正在学习网络搜索。我掌握了一堆数据但结构凌乱
我有一个这种形式的字符串向量:
"9,55< U+00A0>x< U+00A0>1016"
,(现在当我写它时,我认为这是一种特殊的语法,因为我不能在没有在“U”之前放置空格的情况下粘贴它)
在我正在抓取的网站上写的是“9,55 * 10 ^ 16”。
我的目标是将此字符串转换为数字变量,即95500000000000000。 但首先我要删除第一个“&lt;”之间的所有内容和最后一个“&gt;”。 以下是我的尝试。
gsub("<(.*?)>", "", vectorOfStrings)
修改:最好使用"9,55\U{00A0}x\U{00A0}1016"
在R中生成字符串,因为“&lt;”和“&gt;”不是字符串中的实际文字。
答案 0 :(得分:5)
你看到的角色是unicode(UTF-8,我认为),R代表(当它不是很清楚的时候)是小于/大于符号。要删除它,一种方法是&#34;转换&#34; ASCII文本:
iconv(vectorOfStrings, "utf-8", "ASCII", sub = "")
任何不可翻译的内容都应该删除。
答案 1 :(得分:1)
我只会改变你的贪婪&#34;匹配所有&#34;到&#34;匹配所有&#39;&gt;&#39;喜欢,或使用。?让它变得懒惰(匹配最小)
<[^>]*> or <.*?>
或将标记与标记匹配
<.*?>.*?<.*?>
答案 2 :(得分:1)
这有效
>vectorOfStrings = "9,55< U+00A0>x< U+00A0>1016"
>vectorOfStrings1 = gsub("<[^>]+>","",vectorOfStrings)
>vectorOfStrings1
[1] "9,55x1016"
答案 3 :(得分:0)
这是我的代码,用于将科学记数字从网络上划分为数字:
library(magrittr)
vectorOfStrings <- "9,55< U+00A0>x< U+00A0>1016"
scrape_numeric <- function(x) {
x %>%
gsub(">10", ">e+", .) %>%
gsub("<.*>", "", .) %>%
gsub(",", ".", .) %>%
as.numeric
}
scrape_numeric(vectorOfStrings)
# [1] 9.55e+16