[英]Extracting names from PDFs containing emails
我有一個非常具體的問題。 我有一組包含電子郵件(和電子郵件鏈)的PDF文件,通常具有以下格式:
From: Doe, John <john.doe@mail.com>
To: Doe, Jane <john.doe@mail.com>; Doe, John
Subject: Re: Title
text ...
...
From: Doe, John <john.doe@mail.com>
To: Doe, Jane <john.doe@mail.com>; Doe, John
CC: Moe, James; Klein, John
Subject: Title
text ...
因此,在一個PDF文件中,通常會有多個“從”,“到”和“ cc”塊。 名稱的格式始終是姓氏和名字之間用逗號分隔。 不同的名稱之間用半冒號分隔。 但是,有時完整的電子郵件地址(我不需要)將包含在“ <”和“>”之間。 我想從這些PDF文件中提取所有名稱(在from,to和cc部分中),最后輸出如下所示:
Last name first name
Doe John
Doe Jane
Moe James
Klein John
我設法使用pdftools
包讀取了PDF文件:
files <- list.files(pattern = "pdf$")
pdfs <- lapply(files, pdf_text)
但是,我目前在嘗試尋找提取所有名稱並將其保存在數據框中的最佳方法時有些困惑。 我一直在看str_extract
函數:例如,以str_extract(pdfs[[1]], regex("From.*To", ignore_case = TRUE))
,但是找不到有效的解決方案。 任何幫助將非常感激。 例如,假設pdfs[[1]]
包含以下字符串:
teststring <- "From: Doe, John <john.doe@mail.com>\r\n
To: Doe, Jane <john.doe@mail.com>; Doe, John\r\n
Subject: Re: Title\r\n
text ...\r\n
...\r\n
From: Doe, John <john.doe@mail.com>\r\n
To: Doe, Jane <john.doe@mail.com>; Doe, John\r\n
CC: Moe, James; Klein, John\r\n
Subject: Title\r\n
text ...\r\n"
使用teststring
嘗試teststring
library(stringr)
fullnames <- unique(c(str_extract_all(teststring, "[a-zA-Z]+,\\s[a-zA-Z]+", simplify=TRUE)))
splitnames <- unlist(strsplit(fullnames, ","))
ans <- data.frame(Last=splitnames[c(TRUE,FALSE)], First=splitnames[c(FALSE,TRUE)])
產量
Last First
1 Doe John
2 Doe Jane
3 Moe James
4 Klein John
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.