我正在在线解析PDF文件以提取文本。 2完成代码:
第一
require 'open-uri'
require "net/http"
require 'pdf/reader'
module OpenSSL
module SSL
remove_const :VERIFY_PEER
end
end
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
io = open('https://www.mtholyoke.edu/sites/default/files/registrar/bulletin/docs/dept_econ.pdf')
reader = PDF::Reader.new(io)
reader.pages.each do |page|
iso = page.text
$var = iso.scan(/Economics[\s\S]*Overview/)
p $var
end
第二
require 'open-uri'
require "net/http"
require 'pdf/reader'
module OpenSSL
module SSL
remove_const :VERIFY_PEER
end
end
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
io = open('https://www.mtholyoke.edu/sites/default/files/registrar/bulletin/docs/dept_econ.pdf')
reader = PDF::Reader.new(io)
reader.pages.each do |page|
iso = page.text
$var = iso.scan(/Economics[\s\S]*Overview/)
end
p $var
当我在p $var
之后使用end
时,我似乎截断了与第一个代码不同的结果。为什么在p $var
之后放置end
给出与之前放置不同的结果?
在我的网络应用中,我确实需要将其放在end
之后,并且与第一个代码具有相同的结果。我怎么能这样做?
答案 0 :(得分:0)
tmp = reader.pages.map { |p| p.text.scan(/Economics[\s\S]*Overview/) }
tmp
现在包含所有scan
结果的集合。
puts tmp.join("\n")
将在每场比赛之间用换行符打印出来。
虽然不会只打印一堆“经济概况”吗?
如果你想自己收集页面,那就是不同的代码。