【问题标题】:Extracting numbers from sentences从句子中提取数字
【发布时间】:2023-03-24 12:00:02
【问题描述】:

我需要从文本中提取一些数字。文字是

x <- "Lorem ipsum dolor sit amet[245], consectetur adipiscing (325). Deinde prima illa, quae in congressu[232]. solemus: Quid tu, inquit, huc? Sequitur disserendi ratio cognitioque 295. naturae;"

要提取的数字是 325 和 232。它们在括号内和句末。不包括其他数字。我试过strsplit(text, "[A-Za-z]+"),但没有得到我需要的东西。

【问题讨论】:

  • 我对这里的反对票很好奇?

标签: regex r string text-extraction


【解决方案1】:

这是stringi 方法

x <- "Lorem ipsum dolor sit amet[245], consectetur adipiscing (325). Deinde prima illa, quae in congressu[232]. solemus: Quid tu, inquit, huc? Sequitur disserendi ratio cognitioque 295. naturae; Claudii libidini, qui tum erat summo ne imperio, dederetur"

library(stringi)
stri_extract_all_regex(x, "(?<=[\\[(])\\d+(?=[\\])][.?!])")

## [[1]]
## [1] "325" "232"

【讨论】:

  • 很好奇,qdap 没有在括号中获取文本的功能吗?我虽然我是你之前用过几次。
  • 是的,它有bracketXtract,但这个正则表达式不太通用(强制数字之间),因此更准确。我正在成为stringi 包的忠实粉丝,它具有快速、一致的结果。
【解决方案2】:

另一个:

r <- gregexpr("[[(]\\d+[])](?=\\.)", text, perl = TRUE)
(m <- regmatches(text, r)[[1]])
# [1] "(325)" "[232]"

as.integer(gsub("\\D", "", m))
# [1] 325 232

【讨论】:

    【解决方案3】:

    这是使用strsplit....的解决方案

    > x <- 'Lorem ipsum dolor sit amet[245], consectetur adipiscing (325). Deinde prima illa, quae in congressu[232]. solemus: Quid tu, inquit, huc? Sequitur disserendi ratio cognitioque 295. naturae;'
    > strsplit(x, '[^0-9]+')[[1]][3:4]
    ## [1] "325" "232"
    

    或者使用base R来提取这些值。

    > regmatches(x, gregexpr('[[(]\\K\\d+(?=[])](?!,))', x, perl=T))[[1]]
    ## [1] "325" "232"
    

    【讨论】:

      【解决方案4】:

      带re模块

      import re
      
      string="Lorem ipsum dolor sit amet[245], consectetur adipiscing (325). Deinde prima illa, quae in congressu[232]. solemus: Quid tu, inquit, huc? Sequitur disserendi ratio cognitioque 295. naturae;"
      
      print string
      
      pattern = re.compile(r'(?<=[\[(])\d+(?=[\])]\.)')
      
      result = pattern.findall(string)
      
      print result
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多