【发布时间】:2017-05-01 18:29:14
【问题描述】:
我正在抓取的内容包含一些空白元素。如果没有数据(最好),我要么需要停止设置变量,要么之后只做一些手术并完全删除包含空格的哈希。
这是我的抓取代码:
eqs = []
nokogiri_page.xpath('//table/tr').each do |row|
date = row.xpath('td[1]/a/text()').text.strip
location = row.xpath('td[5]/text()').text.strip
eqs.push(
date: date,
location: location
)
end
其中一些是空白的,我事先不知道哪个。所以我尝试遍历数组并删除空白值:
eqs.each do |event|
event.reject! {|k, v| v.empty? || v==" " || v=="" }
end
这成功删除了空白键和值,但我仍然留下空花括号...
输出:
[
{},
{},
{},
{
:date=>"2016-12-14 13:19:55",
:location=>"Myanmar"
},
{
:date=>"2016-12-13 17:57:04",
:location=>"Northern Sumatra, Indonesia"
}
]
我想彻底摆脱空哈希!有人知道我在这里做错了什么吗?
【问题讨论】:
-
如果您运行该数组并运行相同的 reject(&:empty?) 它应该可以解决问题
-
你已经知道如何
reject!,所以reject!顶级数组中你不想要的元素。 -
eqs.reject(&:empty?).each...