簡體   English   中英

從包含電子郵件的PDF中提取名稱

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM