微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否有 R 函数来捕获文本中的大量模式?

如何解决是否有 R 函数来捕获文本中的大量模式?

我的数据集中有以下文本:

[1] "q negociação c/v tipo mercado prazo especificação do título obs (*) quantidade preço / ajuste valor operação / ajuste d/c 1-bovespa c fracionario magaz luiza on eb nm,# 6225 76 d 1-bovespa c fracionario magaz luiza on eb nm # 9 25,76 231,84 d 1-bovespa c fracionario magaz luiza on eb nm 40 25,76 1030,40 d 1-bovespa 1-bovespa c 1-bovespa 40,14 725,60 d resumo dos negócios"

我想提取两个标准之间的各种文本,特别是“1-bovespa”和“d”之间包含的文本。目前,我使用 str_extract readtext 包,但它只对找到的第一个模式这样做。但是,我希望该命令滚动浏览所有文本,并在再次找到该模式时构建一个数据框。

我正在尝试这样的事情:

str_extract_all(out,"\\(1-bovespa).+?\\d")

解决方法

您模式中有括号 - 逃出所以他们从字面上理解。您的文本没有括号。此外,\d 是匹配数字的特殊正则表达式,您需要文字 d。我删除了括号和 \\,它似乎有效:

out = "q negociação c/v tipo mercado prazo especificação do título obs (*) quantidade preço / ajuste valor operação / ajuste d/c 1-bovespa c fracionario magaz luiza on eb nm # 1 25,76 25,76 d 1-bovespa c fracionario magaz luiza on eb nm # 9 25,76 231,84 d 1-bovespa c fracionario magaz luiza on eb nm 40 25,76 1030,40 d 1-bovespa c fracionario mrv on ed nm 40 18,14 725,60 d resumo dos negócios"
str_extract_all(out,"1-bovespa.+?d")
# [[1]]
# [1] "1-bovespa c fracionario magaz luiza on eb nm # 1 25,76 d" 
# [2] "1-bovespa c fracionario magaz luiza on eb nm # 9 25,84 d"
# [3] "1-bovespa c fracionario magaz luiza on eb nm 40 25,40 d"
# [4] "1-bovespa c fracionario mrv on ed" 
,

这是一种使用重复模式作为分隔符的不同方法。这有点hacky,但似乎有效:

library(tidyverse)
text <- "q negociação c/v tipo mercado prazo especificação do título obs (*) quantidade preço / ajuste valor operação / ajuste d/c 1-bovespa c fracionario magaz luiza on eb nm # 1 25,60 d resumo dos negócios"


delim1 <- "1-bovespa "
delim2 <- " d"

result <- strsplit(text,delim1) %>% 
  unlist() %>%
  paste0(delim1,.) %>% 
  strsplit(.," d") %>% 
  unlist() %>% 
  enframe(value = "text",name = NULL) %>% 
  slice(2:nrow(.)) %>%
  mutate(text = paste0(text,delim2)) %>% 
  filter(grepl(delim1,text))

结果:

result
# A tibble: 4 x 1
  text                                                           
  <chr>                                                          
1 1-bovespa c fracionario magaz luiza on eb nm # 1 25,76 d 
2 1-bovespa c fracionario magaz luiza on eb nm # 9 25,84 d
3 1-bovespa c fracionario magaz luiza on eb nm 40 25,40 d
4 1-bovespa c fracionario mrv on ed nm 40 18,60 d  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?