正则表达式删除 <> 之间的所有内容
Regular expressions remove everything between <>
我正在学习网络抓取。我掌握了一堆数据,但结构很乱。
我有一个这种形式的字符串向量:
"9,55< U+00A0>x< U+00A0>1016"
, (现在我写的时候觉得这是一个特殊的语法,因为如果不在"U"之前放一个space就不能粘贴到这里)
我从网站上抓取的内容写为“9,55*10^16”。
我的长篇目标 运行 是将这个字符串变成一个数字变量,即 95500000000000000。
但首先我想删除第一个“<”和最后一个“>”之间的所有内容。
下面是我的尝试。
gsub("<(.*?)>", "", vectorOfStrings)
Edit:最好使用 "9,55\U{00A0}x\U{00A0}1016"
在 R 中生成字符串,因为“<”和“>”不是字符串中的实际文字。
您看到的字符是 unicode(我认为是 UTF-8),R 的表示(当它不是很清楚时)是 less-than/greater-than 符号。要删除它,一种方法是将 "convert" 文本转换为 ASCII:
iconv(vectorOfStrings, "utf-8", "ASCII", sub = "")
任何不可翻译的内容都应该被删除。
我会简单地将你的贪心 "Match all" 更改为“匹配除 '>' 之外的所有内容,或者使用 .? 使其变得懒惰(匹配最小值)
<[^>]*> or <.*?>
或将标签与标签匹配
<.*?>.*?<.*?>
这个有效
>vectorOfStrings = "9,55< U+00A0>x< U+00A0>1016"
>vectorOfStrings1 = gsub("<[^>]+>","",vectorOfStrings)
>vectorOfStrings1
[1] "9,55x1016"
这是我从网络上抓取科学计数法数字到数字的代码:
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
我正在学习网络抓取。我掌握了一堆数据,但结构很乱。
我有一个这种形式的字符串向量:
"9,55< U+00A0>x< U+00A0>1016"
, (现在我写的时候觉得这是一个特殊的语法,因为如果不在"U"之前放一个space就不能粘贴到这里)
我从网站上抓取的内容写为“9,55*10^16”。
我的长篇目标 运行 是将这个字符串变成一个数字变量,即 95500000000000000。 但首先我想删除第一个“<”和最后一个“>”之间的所有内容。 下面是我的尝试。
gsub("<(.*?)>", "", vectorOfStrings)
Edit:最好使用 "9,55\U{00A0}x\U{00A0}1016"
在 R 中生成字符串,因为“<”和“>”不是字符串中的实际文字。
您看到的字符是 unicode(我认为是 UTF-8),R 的表示(当它不是很清楚时)是 less-than/greater-than 符号。要删除它,一种方法是将 "convert" 文本转换为 ASCII:
iconv(vectorOfStrings, "utf-8", "ASCII", sub = "")
任何不可翻译的内容都应该被删除。
我会简单地将你的贪心 "Match all" 更改为“匹配除 '>' 之外的所有内容,或者使用 .? 使其变得懒惰(匹配最小值)
<[^>]*> or <.*?>
或将标签与标签匹配
<.*?>.*?<.*?>
这个有效
>vectorOfStrings = "9,55< U+00A0>x< U+00A0>1016"
>vectorOfStrings1 = gsub("<[^>]+>","",vectorOfStrings)
>vectorOfStrings1
[1] "9,55x1016"
这是我从网络上抓取科学计数法数字到数字的代码:
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