文本挖掘"在扫描中:引用字符串中的EOF"错误

时间:2015-07-06 23:26:50

标签: r text-mining tm pdftotext

我需要将文件夹中的24个PDF文件转换为txt文件,以便我可以对它们进行语义分析。我看了this问题,然后从那里开始。但是,在第一次使代码工作后,我改变了一些事情,现在我收到以下错误:

In scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  :
  EOF within quoted string

因此,下面代码中bodies变量中保存的内容只是一个包含24个空格的列表,最后我得到了24个空白文本文件(除了创建的24个文本文件外)通过将PDF转换为txt)。我不确定我做错了什么 - 有一次,这段代码有效!

我已经查看了我能找到的有关此错误的内容,但这些内容与read.csv相关联,并且他们建议的修正(设置white.space=TRUEquote="")不行。

这里是代码(错误在第20-23行):

# folder with journal articles
PDFfolder_path <- "~/Dropbox/The Egoist PDFs/PDFs"
# vector of PDF file names
PDFfiles <- list.files(path=PDFfolder_path, pattern="*.pdf", full.names=TRUE)
# location of pdftotext.exe file
converter <- "~/Widgets/PDFConverter/bin64/pdftotext"
# folder with text files
textfolder_path <- "~/Dropbox/The Egoist PDFs/textfiles"

# convert PDFs in origin folder into txt files
lapply(PDFfiles, function(i) {
  system(paste(converter, paste0('"', i, '"')), wait=FALSE)
})
# it takes DropBox a bit of time to catch all of the folders
# without this we only end up with 23 txt files for some reason
Sys.sleep(.5)
txtfiles_in_PDFfolder_path <- list.files(path=PDFfolder_path, pattern="*.txt", full.names=TRUE)

# extracting only the Bodies of the articles
bodies <- lapply(txtfiles_in_PDFfolder_path, function(i){
  j <- paste0(scan(i, what = character()),  collapse = " ")
  regmatches(j, gregexpr("(?<=Published).*?(?=Prepaid Advertisements)", j, perl=TRUE))
})

# write article-bodies into txt files
lapply(1:length(bodies), function(i){
  write.table(bodies[i], file=paste(txtfiles_in_PDFfolder_path[i], "body", "txt", sep="."), quote=FALSE, row.names=FALSE, col.names=FALSE, eol=" ")
})

编辑:关于bodies变量的结果的更多信息:结果是24的列表,它采用以下形式(在R Studio控制台上,我不确定实际名称这个的):     机构:24的清单        :1的清单         .. $:chr(0)        :1的清单         .. $:chr(0) (重复24次)

但是我不能为我的生活找出原因chr(0) - 我认为它与正在发生的同类事情有关{ {3}} - 我绝对没有抓住所有的线路。

我已经尝试了我能想到的一切,甚至为readLines()切换scan(),我也想看看这可能会有所帮助。我甚至为scan()切换了read.table(),但事实证明read.table()本身依赖于scan!所以...我被卡住了,我只是在圈子里工作。

0 个答案:

没有答案