我想根据其他字符串从字符串中提取值
例子:
单词中没有{}和[]符号,我加了它是为了引题
目标字符串:[xxxxxx] 分隔符:{xxxxxx}
"{CNPJ} [00.005.598/0001-01] {Razão Social} [CONEMAX DO BRASIL INDUSTRIA E COMERCIO DE CONEXOES LTDA] {Nome Fantasia} [CONEMAX DO BRASIL] {Tipo} [MATRIZ] {Data Abertura} [17 /05/1994] {Situação Cadastral} [ATIVA] {Data da Situação Cadastral} [27/08/2005] {Capital Social} [R$ 50.000] {Natureza Jurídica} [2062 - SOCIEDADE EMPRESARIA LIMITADA] {Empresa MEI} [ Não]"
我想得出一个结论,{xxxxxx} 是列名,[xxxxxx] 是内容。
我还没有尝试过任何东西,但我相信 str_extract 和正则表达式。
您可以在此处使用正面和负面的回顾来匹配您的值和列名称:
library(stringr)
# Match any text between curly braces
header <- str_match_all(txt, "(?<=\\{).*?(?=\\})")
# Match any text between square brackets
values <- str_match_all(txt, "(?<=\\[).*?(?=\\])")
# Create a data frame
values |>
unlist() |>
matrix(nrow = 1) |>
data.frame() |>
setNames(unlist(header))
# CNPJ Razão Social Nome Fantasia Tipo Data Abertura Situação Cadastral Data da Situação Cadastral
# 1 00.005.598/0001-01 CONEMAX DO BRASIL INDUSTRIA E COMERCIO DE CONEXOES LTDA CONEMAX DO BRASIL MATRIZ 17/05/1994 ATIVA 27/08/2005
# Capital Social Natureza Jurídica Empresa MEI
# 1 R$ 50.000 2062 - SOCIEDADE EMPRESARIA LIMITADA Não
您可能必须手动指定列名,然后在
strsplit
的正则表达式模式上使用 paste(., collapse='|')
(给出 "CNPJ|Razão Social|Nome Fantasia|..."
)。
cols <- c("CNPJ", "Razão Social", "Nome Fantasia", "Tipo", "Data Abertura",
"Situação Cadastral", "Data da Situação Cadastral", "Capital Social",
"Natureza Jurídica", "Empresa MEI")
t(sapply(el(strsplit(x, paste(cols, collapse = "|"))), trimws)[-1]) |>
as.data.frame() |> setNames(make.names(cols)) |>
transform(Data.Abertura=as.Date(Data.Abertura, '%d/%m/%Y'), ## optional some cleaning
Data.da.Situação.Cadastral=as.Date(Data.da.Situação.Cadastral, '%d/%m/%Y'),
Capital.Social=gsub('\\D', '', Capital.Social))
# CNPJ Razão.Social Nome.Fantasia
# 1 00.005.598/0001-01 CONEMAX DO BRASIL INDUSTRIA E COMERCIO DE CONEXOES LTDA CONEMAX DO BRASIL
# Tipo Data.Abertura Situação.Cadastral Data.da.Situação.Cadastral Capital.Social
# 1 MATRIZ 1994-05-17 ATIVA 2005-08-27 50000
# Natureza.Jurídica Empresa.MEI
# 1 2062 - SOCIEDADE EMPRESARIA LIMITADA Não
资料:
x <- "CNPJ 00.005.598/0001-01 Razão Social CONEMAX DO BRASIL INDUSTRIA E COMERCIO DE CONEXOES LTDA Nome Fantasia CONEMAX DO BRASIL Tipo MATRIZ Data Abertura 17/05/1994 Situação Cadastral ATIVA Data da Situação Cadastral 27/08/2005 Capital Social R$ 50.000 Natureza Jurídica 2062 - SOCIEDADE EMPRESARIA LIMITADA Empresa MEI Não"