Итерация по массиву и удаление определенных строковых элементов - PullRequest
2 голосов
/ 06 декабря 2011

Я разбираю html-страницу с помощью nokogiri и извлекаю некоторые данные. Кажется, что извлекает правильные точки данных, но также извлекает нули и запятые, вот пример того, что извлечено:

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

Я хочу иметь возможность удалить все экземпляры "null", а также запятые в целом, а затем преобразовать каждый элемент в число с плавающей точкой. Вышеприведенное, похоже, совсем не удаляет «ноль».

Ответы [ 3 ]

3 голосов
/ 06 декабря 2011

Вы могли бы просто сделать:

array.reject{|x|x =~ /null/}.map(&:to_f)
1 голос
/ 06 декабря 2011

Вот, пожалуйста:

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]
0 голосов
/ 06 декабря 2011

без запятых (обратите внимание на скобку в регулярном выражении):

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

результат:

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