`end`之前和之后的全局变量

时间:2016-01-28 21:23:10

标签: ruby

我正在在线解析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之后,并且与第一个代码具有相同的结果。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

tmp = reader.pages.map { |p| p.text.scan(/Economics[\s\S]*Overview/) }

tmp现在包含所有scan结果的集合。

puts tmp.join("\n")

将在每场比赛之间用换行符打印出来。

虽然不会只打印一堆“经济概况”吗?

如果你想自己收集页面,那就是不同的代码。