【问题标题】:Strip HTML Formatting from R Strings从 R 字符串中去除 HTML 格式
【发布时间】:2017-04-21 21:53:10
【问题描述】:

我正在尝试从这个 url 中抓取信息:http://www.sports-reference.com/cbb/boxscores/index.cgi?month=2&day=3&year=2017,并且已经相当远地达到了我为每个游戏设置如下字符串的地步:

str <-"Yale\n\t\t\t87\n\t\t\t\n\t\t\t\tFinal\n\t\t\t\t\n\t\t\t\n\t\tColumbia\n\t\t\t78\n\t\t\t \n\t\t\t\n\t\t"

理想情况下,我希望得到一个看起来像这样的向量或数据框:

str_vec <- c('Yale',87,'Columbia',78)

我尝试了一些不起作用的方法:

without_n <- gsub(x = str, pattern = '\n')
without_Final <- gsub(x = without_n, pattern = 'Final')
str_vec <- strslpit(x = without_Final, split = '\t')

提前感谢您提供任何有用的提示/答案!

【问题讨论】:

  • 为什么Final 不在预期输出中?
  • 这是去年二月的篮球成绩列表。希望现在所有的游戏都应该结束了!
  • strsplit(str, '\\s+')[[1]],但最好一开始就正确刮。不过,在这方面,请检查条款。
  • 啊。接得好。我只是用它来学习抓取,但我想我会找到另一个网站来使用......

标签: r rvest


【解决方案1】:

您可以使用gsub 首先将字符串中的所有非字母数字字符替换为空字符串。然后在名称和分数之间插入space。此后,您可以将space 上的字符串拆分为所需的数据结构。

require(stringr)

step_1 <- gsub('([^[:alnum:]]|(Final))', "", str)
#"Yale87Columbia78"

step_2 <- gsub("([[:alpha:]]+)([[:digit:]]+)", "\\1 \\2 ", step_1)
strsplit(str_trim(step_2)," ")
#"Yale" "87" "Columbia" "78" 

我假设字符串模式是一致的,这样才能可靠地工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    相关资源
    最近更新 更多