2017-08-24 19 views
0

私は非常に具体的な質問があります。 「電子メールを含むPDFから名前を抽出する

From: Doe, John <[email protected]> 
To: Doe, Jane <[email protected]>; Doe, John 
Subject: Re: Title 
text ... 
... 
From: Doe, John <[email protected]> 
To: Doe, Jane <[email protected]>; Doe, John 
CC: Moe, James; Klein, John 
Subject: Title 
text ... 

ので、1つのPDFファイルに、あなたは一般的に、「に」「から」のいくつかを持っている:私は、電子メール(電子メールチェーン)を含むPDFファイルのセットを持っており、一般的に次のような形式のものでcc "ブロックに分割されます。名前の形式は常に姓と名がカンマで区切られています。異なる名前はセミコロンで区切られています。ただし、「<」と「>」の間に完全なメールアドレス(必要ない)が含まれることがあります。

Last name first name 
Doe   John 
Doe   Jane 
Moe   James 
Klein  John 

私はPDFで読むために管理している:私はこのような出力を持っているこれらのPDFファイルから(から、に、とのcc部分で)名前をすべて抽出し、最後にしたいと思いますpdftoolsパッケージを使用してファイル:しかし

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 <[email protected]>\r\n 
To: Doe, Jane <[email protected]>; Doe, John\r\n 
Subject: Re: Title\r\n 
text ...\r\n 
...\r\n 
From: Doe, John <[email protected]>\r\n 
To: Doe, Jane <[email protected]>; Doe, John\r\n 
CC: Moe, James; Klein, John\r\n 
Subject: Title\r\n 
text ...\r\n" 
+0

を試してみました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)]) 

を使用して、これを試してみてください作業?あなたが無料のコンサルティングを探しているのでなければ、 – hrbrmstr

+0

私はここで適切だと思ったより知識のあるユーザーからアドバイスを受けようとしていました。私は 'str_extract'関数と一緒にすべてをつなぎ合わせるような、さまざまなアプローチを試みました。例えば。 'str_extract(pdfs [[1]]、regex(" From。* To "、ignore_case = TRUE))'で始まります。しかし、特に、最後と最初の名前を適切に抽出しようとしているときに、まだ解決策が見つかっていません。私は完全な解決策を求めているわけではありませんが、有用なパッケージや関数へのポインタが可能です。ありがとう! – rp1

+0

質問をより具体的にすることはできますか?私はまたあなたの方法が電子メールの形式を知っていることをどのように信頼性の低い方法が与えられているか見ていない。 – raymkchow

答えて

1

は、あなたがしなかったことを何 "信頼できない" 方法を出力

Last First 
1 Doe John 
2 Doe Jane 
3 Moe James 
4 Klein John 
+0

これは素晴らしいです。私は 'regmatches'と' gsub'を使ってより複雑なバージョンを使用しましたが、これははるかにエレガントです。ありがとうございました! – rp1

+0

うれしい – CPak

関連する問題