2011-12-05 9 views
2

nokogiriでhtmlページを解析し、いくつかのデータポイントを抽出しています。正しいデータ点を抽出するようだが、またヌルとカンマのを抽出し、ここで抽出いただきました!のサンプルです:私は、一般的にすべてのインスタンス「ヌル」と同様にコンマを削除できるようにしたい配列を反復処理して特定の文字列要素を削除する

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

各要素をフロートに変換します。上記は「null」を取り除いているようではありません。

+1

'array.inspect'を実行して、非印字文字を確認します。あるいは、x =〜/ nullに変更してください。* $/' – karatedog

答えて

3

あなただけ行うことができます:ここで

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

これでも動作していないようですが、それ以上のものは配列の未定義メソッドto_fを取得します。これは何ができますか? – Sun

+1

そこにflattenを追加してください:array.flatten.reject ... – pguardiario

+0

同じ問題ですが、それはエラーを投げませんが、ヌル部分も取り除きません。 – Sun

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] 
+1

これは、入力にある可能性のある0もすべて削除します – pguardiario

+1

True。しかし、OPは、彼はゼロが必要であると主張していません:) – kyrylo

+1

彼は彼が四人か五人も必要と主張しませんでした。私はコードがそれらを処理すべきだと思います。 – pguardiario

0

カンマ(、正規表現でブラケットを注意してください)を除く:

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

結果:

result = data1.reject{|item| item == "null"}.map(&:to_f) 
関連する問題