迭代数组并删除某些字符串元素

时间:2011-12-05 23:27:48

标签: ruby arrays nokogiri

我正在使用nokogiri解析一个html页面并提取一些数据点。它似乎提取了正确的数据点,但也提取了空值和逗号,这里是一个提取的样本:

null,
3.28,
null,
null,
null,
1.91,
2.83,
null,
9.06,
null,
3.80,
6.42,
null,

我希望能够删除所有“null”的实例以及一般的逗号,然后将每个元素转换为float。上面似乎根本没有删除“null”。

3 个答案:

答案 0 :(得分:3)

你可以这样做:

array.reject{|x|x =~ /null/}.map(&:to_f)

答案 1 :(得分:1)

你走了:

input = <<INPUT
null,
3.28,
null,
null,
null,
1.91,
2.83,
null,
9.06,
null,
3.80,
6.42,
null,
INPUT

result = input.split.map(&:to_f)
=> [0.0, 3.28, 0.0, 0.0, 0.0, 1.91, 2.83, 0.0, 9.06, 0.0, 3.8, 6.42, 0.0]
result.delete(0.0)
=> 0.0
result
=> [3.28, 1.91, 2.83, 9.06, 3.8, 6.42]

答案 2 :(得分:0)

不包括逗号(请注意正则表达式中的括号):

data1 =  inline.to_s().scan(/y: (.*?)\,/)

结果:

result = data1.reject{|item| item == "null"}.map(&:to_f)