我正在解析一个带有nokogiri的html页面并提取一些数据点。这似乎提取正确的数据点,而且还提取空值和逗号,这里有最新提取的样品:遍历数组并删除某些字符串元素
null,
3.28,
null,
null,
null,
1.91,
2.83,
null,
9.06,
null,
3.80,
6.42,
null,
我希望能够删除逗号的所有实例“空”,以及一般然后将每个元素转换为一个浮点数。上述似乎并没有删除“null”。
我正在解析一个带有nokogiri的html页面并提取一些数据点。这似乎提取正确的数据点,而且还提取空值和逗号,这里有最新提取的样品:遍历数组并删除某些字符串元素
null,
3.28,
null,
null,
null,
1.91,
2.83,
null,
9.06,
null,
3.80,
6.42,
null,
我希望能够删除逗号的所有实例“空”,以及一般然后将每个元素转换为一个浮点数。上述似乎并没有删除“null”。
你可能只是这样做:
array.reject{|x|x =~ /null/}.map(&:to_f)
即使这样做似乎也不起作用,还有更多我得到未定义的[“null”]数组的方法to_f。这可能是什么? – Sun
在那里添加一个flatten:array.flatten.reject ... – pguardiario
仍然是同样的问题,它不会抛出错误,但它也不会摆脱null部分。 – Sun
在这里你去:
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]
这也会删除可能在输入 – pguardiario
为真的任何0。但OP没有声称,他需要零:) – kyrylo
他并没有声称他需要四或五。我认为代码应该处理它们。 – pguardiario
不包括逗号(注意正则表达式中的括号内):
data1 = inline.to_s().scan(/y: (.*?)\,/)
结果:
result = data1.reject{|item| item == "null"}.map(&:to_f)
做一个'array.inspect'来检查非打印字符。或者将'x =='空,''改为'x =〜/ null。* $ /' – karatedog