【问题标题】:How to extract date from the text如何从文本中提取日期
【发布时间】:2018-08-10 14:43:26
【问题描述】:

我试图从以下文本中提取日期。不幸的是,它一直给我警告,结果是NA

我有以下文字:

"IRA-401K Investment Assets Under Management (AUM)  As of July 31, 2018 BMG Funds  
$217,743,573 BMG BullionBars  $45,176,561 TOTAL  $262,920,134 Physical Holdings Download 
Scotiabank BMG BullionBars List Download Brinks BMG BullionBars List Holdings by Ounces As 
of July 31, 2018  Gold Bars 21,132.496 Silver Bars 453,531.574 Silver Coins 
80,500 Platinum Bars"

文本包含以下日期:2018 年 7 月 31 日。这些日期在文本中出现两次。

我使用以下代码从文本中提取日期。

test_take <- lapply(cleanurl_text, parse_date_time, orders = "mdy", 
             locale = Sys.setlocale('LC_TIME', locale = "English_Canada.1252"))

我收到以下错误消息:

警告信息: 所有格式都无法解析。未找到格式。

当我包含精确 = TRUE 时

test_take <- lapply(as.character(cleanurl_text), parse_date_time, orders = "mdy", 
       locale = Sys.setlocale('LC_TIME', locale = "English_Canada.1252"), exact = TRUE)

我收到以下警告:

警告信息: 1 解析失败。

生成的对象仍然包含NA

【问题讨论】:

    标签: r regex web-scraping anytime


    【解决方案1】:

    以下正则表达式可以提取发布格式的日期。

    pattern <- paste(month.name, collapse = "|")
    pattern <- paste0("(", pattern, ")\\s\\d{1,2}.{1,2}\\d{4}")
    
    m <- gregexpr(pattern, cleanurl_text)
    regmatches(cleanurl_text, m)
    #[[1]]
    #[1] "July 31, 2018" "July 31, 2018"
    

    请注意,这可以在一行代码中完成,regmatches(gregexpr(.)),但我选择了两行代码以使其更具可读性。

    【讨论】:

    • 感谢您的快速回复。如果您向右滚动,您也可以找到第二个日期。它在“以盎司为单位的持股量”之后开始
    • @Cricketer 完成。看看是不是这个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多